【Re】JS 逆向快速入门实战指南

2024-08-10 16:18:33 浏览数 (4)

声明

本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。

流量分析,数据接口均已做脱敏处理,若造成侵权,请立即联系博主删除!

逆向目标

目标:将数据包中的密文进行解密;

链接: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

代码语言:javascript复制
nmp install crypto-js

然后导入第三方库 crypto-js,并替换原代码中的 y.a,代码如下所示:

代码语言:javascript复制
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))
}

但是,我们发现变量 zj 还没定义,从现在的位置往上寻找,发现 zj 正在此处:

将变量 zj 定义之后,尝试运行代码 console.log(f(data)),运行结果如下所示:

至此,我们就成功地完成了解密分析。

后记

本博文通过实际案例的解密过程,展示了如何运用逆向工程技术来破解数据加密,并理解其背后的逻辑。阅读完本博文之后,希望读者能够对如何通过分析 JavaScript 代码来解密 API 接口中的加密数据有一个清晰的理解。

以上就是博文 JS 逆向快速入门实战指南 的所有内容了,希望本篇博文对大家有所帮助!欢迎大家持续关注我的博客,一起分享学习和成长的乐趣!✨

严正声明:本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。

1 人点赞