自己写的逆向案例十五

您所在的位置:网站首页 升学e网通换头像 自己写的逆向案例十五

自己写的逆向案例十五

2024-07-13 07:14| 来源: 网络整理| 查看: 265

网址:升学e网通-高中生在线学习一站式平台

寻找登录包,发现密码进行了加密

 下方搜索password=(可以变着搜索password:,password.),凭经验点击下方第二个js文件

找到加密位置,打上断点,分析代码:

分析参数,果然是加密位置。

null != a && a.password && (a.password = (0, y.b)(a.password))

它使用了三元运算符和条件运算符。这段代码的意图是检查变量a是否不为null,并且a对象中是否存在password属性。如果这两个条件都满足,就将a.password的值传递给一个函数y.b,并将其结果赋值回a.password。

不过,这段代码中有一些语法错误和可能的误解:

(0, y.b)(a.password) 这部分使用了逗号操作符,它通常用于执行两个表达式,并返回第二个表达式的结果。在这里,0是第一个表达式,它没有实际作用,只是被执行,而y.b是第二个表达式,它被当作函数调用。

但是,y.b作为函数调用时,应该确保它是一个函数。如果y.b不是一个函数,这段代码将会导致运行时错误。

代码中的null != a是检查a是否不是null的正确方式,但更常见的写法是使用a != null。

a.password &&这部分是条件运算符,如果a.password存在且为真值,它将执行后面的表达式。

 说白了,就是y.b这个函数加密密码。进入这个函数,一下子就明白了是AES的加密方法。至于是不是标准AES,我们直接复制,并调用库,让GPT帮我修改一下代码。

const CryptoJS = require('crypto-js'); // 将长密码字符串转换为CryptoJS可以理解的格式 i = CryptoJS.enc.Utf8.parse("20171109124536982017110912453698"); // 将初始化向量(IV)字符串转换为CryptoJS可以理解的格式 a = CryptoJS.enc.Utf8.parse("2017110912453698"); // 定义加密函数c const c = function(e) { // 检查e是否为undefined if (void 0 !== e) { let t = e; // 保存e的值 let n = CryptoJS.enc.Utf8.parse(t); // 将e转换为CryptoJS的格式 // 使用AES算法和CBC模式加密n,使用i作为密钥,a作为IV,PKCS7作为填充方式 let encrypted = CryptoJS.AES.encrypt(n, i, { iv: a, mode: CryptoJS.mode.CBC, // 修正了mode的属性访问方式 padding: CryptoJS.pad.Pkcs7 // 修正了padding的属性访问方式 }); // 返回加密后的ciphertext转换为大写字符串 return encrypted.ciphertext.toString().toUpperCase(); } // 如果e是undefined,返回空字符串 return ""; }; console.log(c('123456')) #结果是A7428361DEF118911783F446A129FFCE

说明是一个标准的AES加密。搞定完工! 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3