某项目前端js解密【二】之随机秘钥如何固定
字数 1189 2025-08-29 08:31:47
固定前端JS随机秘钥的三种方法详解
一、背景介绍
在前端加密过程中,经常会遇到使用随机生成的AES秘钥进行加密的情况。本文档将详细介绍三种固定前端JS随机秘钥的方法,以便于安全测试和调试工作。
二、加密基础信息
- 加密算法:AES
- 加密模式:CBC
- 偏移量(IV):"1234567812345678"(16位)
- 秘钥长度:16位
三、固定秘钥的核心思路
从代码分析可知,加密最终使用的秘钥存储在变量t中。因此,固定秘钥的核心方法就是在秘钥生成后,重新给变量t赋一个固定的值。
四、三种固定秘钥的方法
方法一:Chrome浏览器调试工具替换JS
步骤:
- 打开Chrome开发者工具(F12)
- 切换到"Sources"(源代码)标签
- 点击"Overrides"(替换)选项卡
- 添加一个本地文件夹作为替换目录
- 访问目标网页,找到需要修改的JS文件
- 右键点击该JS文件,选择"Save for overrides"(保存并覆盖)
- 在本地副本中修改JS代码,固定变量
t的值 - 返回"Overrides"选项卡,确认替换文件已加载
- 硬性重新加载网站(Ctrl+F5或Cmd+Shift+R)
关键点:
- 必须使用硬性重新加载才能使替换生效
- 修改后的JS文件会保存在本地指定目录
方法二:BurpSuite拦截修改JS响应
步骤:
- 配置BurpSuite:
- 进入"Proxy" → "Options"
- 勾选"Intercept Server Responses"选项
- 确保浏览器已关闭调试工具的JS替换功能
- 清空浏览器缓存并硬性重新加载页面
- 使用BurpSuite拦截JS文件的响应包
- 在响应中找到变量
t的定义,修改为固定值(如"8888999988889999") - 放行修改后的响应
- 浏览器会缓存修改后的JS文件
关键点:
- 必须清空缓存并硬性加载才能确保获取最新JS
- 修改后的JS会被浏览器缓存,后续请求会直接使用
方法三:使用ReRes浏览器插件
步骤:
- 安装Chrome插件"ReRes"
- 配置ReRes规则:
- 设置原始JS文件URL
- 映射到本地修改后的JS文件
- 在本地JS文件中固定变量
t的值 - 刷新页面,插件会自动替换加载的JS文件
注意事项:
- 此方法在macOS上可能存在问题,Windows系统上可用
- 操作相对简单,适合快速测试
五、验证方法
固定秘钥后,可以通过以下步骤验证:
- 在页面上输入测试数据(如手机号)
- 抓取加密后的请求报文
- 使用固定的秘钥进行解密
- 确认解密结果与原始输入一致
六、总结
三种方法各有优缺点:
- Chrome调试工具:适合开发调试,无需额外工具
- BurpSuite:适合安全测试,可与其他测试流程结合
- ReRes插件:操作简单,但跨平台支持有限
选择哪种方法取决于具体的使用场景和测试需求。在实际应用中,可以根据情况灵活选择最适合的方法。