声明
本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。
流量分析,数据接口均已做脱敏处理,若造成侵权,请立即联系博主删除!
逆向目标
目标:将数据包中的密文进行解密;
链接:GTCx6Xsvc3waRj6PF1Gpo4Fz1M8VtxspCDiBP5JbMQPRRSmH9tQJ;
简介:为了提高传输数据的安全性,防止中间人攻击等,会对重要的数据进行加密,如下图所示,本篇博文我们就来逆向解密这些数据;
解密分析
虽然流量包里的数据是加密的,但是在浏览器的页面中却是明文显示,说明是通过 JS 来进行解密,因此我们通过搜索 JS 里的关键解密函数,来进行解密分析。
Ctrl Shift F
快速搜索 decrypt(
,找到关键解密函数,如下图所示:
在 return
这里打个断点进行调试,发现最终返回的是明文数据,如下图所示,说明这个函数正是我们要找的解密函数。
将这块解密代码复制出来,如下所示:
代码语言:javascript复制data = ''
function f(data) {
var e = y.a.AES.decrypt(data, z, {
iv: y.a.enc.Utf8.parse(j.substr(0, 16)),
mode: y.a.mode.ECB,
padding: y.a.pad.Pkcs7
});
return JSON.parse(e.toString(y.a.enc.Utf8))
}
由于这里用的是标准的 AES 加密算法,因此偷懒直接使用第三方库 crypto-js
来解密。
先安装第三方库 crypto-js
:
nmp install crypto-js
然后导入第三方库 crypto-js
,并替换原代码中的 y.a
,代码如下所示:
const CryptoJs = require('crypto-js')
function f(data) {
var e = CryptoJs.AES.decrypt(data, z, {
iv: CryptoJs.enc.Utf8.parse(j.substr(0, 16)),
mode: CryptoJs.mode.ECB,
padding: CryptoJs.pad.Pkcs7
});
return JSON.parse(e.toString(CryptoJs.enc.Utf8))
}
但是,我们发现变量 z
和 j
还没定义,从现在的位置往上寻找,发现 z
和 j
正在此处:
将变量 z
和 j
定义之后,尝试运行代码 console.log(f(data))
,运行结果如下所示:
至此,我们就成功地完成了解密分析。
后记
本博文通过实际案例的解密过程,展示了如何运用逆向工程技术来破解数据加密,并理解其背后的逻辑。阅读完本博文之后,希望读者能够对如何通过分析 JavaScript 代码来解密 API 接口中的加密数据有一个清晰的理解。
以上就是博文 JS 逆向快速入门实战指南 的所有内容了,希望本篇博文对大家有所帮助!欢迎大家持续关注我的博客,一起分享学习和成长的乐趣!✨
严正声明:本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。