文章总结: 本文详细讲解了针对某在线题库系统的JS逆向分析过程,通过抓包发现响应数据经3DES-ECB加密且存在Sign签名验证。作者通过定位JS代码成功破解两套签名算法:第一套为参数拼接后加盐值ov88^XWF@u5dcb0@5##0yb5$5Yw0411v再进行MD5加密;第二套涉及URL处理与Client-Identifier等参数组合。最终使用Python实现3DES解密与签名生成,成功还原题库数据。文章提供了完整的逆向思路与代码实现,适合爬虫与逆向初学者参考学习。 综合评分: 78 文章分类: JS逆向,爬虫,渗透测试,安全开发,实战经验
【JS逆向】手把手教你逆向某测试系统
原创
隐雾安全 隐雾安全
隐雾安全
2026年2月7日 09:00 四川
📝 编者语
在进行爬虫或数据采集时,我们经常会遇到一种情况:抓包看到的响应数据不是明文的 JSON,而是一串看不懂的乱码。这意味着服务器对数据进行了加密。
今天带大家实操一次完整的JS逆向流程。我们将从抓包分析开始,一步步定位加密算法,最后使用 Python 成功还原出题库数据。
(注:本文仅供技术交流与学习,请勿用于非法用途或商业侵权。)
1
抓包分析:发现“天书”
解密的对象是一个在线题库。
首先打开浏览器开发者工具(F12),切换到移动端模式,点击“模拟考试”。
但在查看响应数据时,问题出现了——返回的数据既不是HTML也不是JSON,而是一大串以 yO+7… 开头的字符。
数据包内容如下:
2
逆向分析:寻找解密钥匙
我们需要知道两件事:
- 那串乱码是怎么解密的?
- 那个 Sign 签名是怎么生成的?
通过在 JS 代码中搜索关键词,我们要找的核心代码都在文档中出现了。
1. 破解 Sign 签名算法
我们在 JS 文件中找到了签名的生成位置。
从截图中可以看到,Sign 的生成非常简单粗暴:
就是把请求参数拼接起来,后面强行加上一串固定的乱码(我们称之为“盐值”),然后进行 MD5 加密。这个“盐值” ov88… 就是签名的核心秘密。
2. 破解 3DES 解密算法
接着,我们要解开 Response 里的乱码。在 JS 代码中找到了核心的解密逻辑。
技术细节确认: 根据这段代码(mode: CryptoJS.mode.ECB),我们可以百分百确定:
- 加密算法:3DES
- 模式:ECB 模式
- 密钥 (Key):YESagCxppd9n4m74ElcxJq==
2
Python 代码还原
既然知道了算法是 3DES-ECB,密钥也是公开的,我们就可以用 Python 写一个解密脚本。
4
最终成果
签名:
两套签名代码
第一套:
E = us(v) v向上索引到对应位置即E为sign一部分
E+ov88^XWF@u5dcb0@5##0yb5$5Yw0411v
V={}中的内容为签名的内容+ov88^XWF@u5dcb0@5##0yb5$5Yw0411v的盐值
数据包1:
按照上述代码重构内容生成签名,生成后的签名与上述数据包的签名相同说明成功绕过
第二套关键代码块:
r、l、o、n、r对应下述代码
参数o中是将url中的/api替换为空
uu = Client-Identifier
数据包2:
按照第二套加密方式重构生成签名,生成后的签名与上述数据包的签名相同说明成功绕过
🎁 文末福利
联系客服获取《海角社区警告》
!
微信号丨Hiddenfog001
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:隐雾安全 隐雾安全 隐雾安全《【JS逆向】手把手教你逆向某测试系统》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论