如何用Chrome DevTools追踪JS生成密文?TP-Link OpenVPN端口限制突破求助
追踪TP-Link路由器OpenVPN配置请求中加密参数的生成流程
一、Chrome DevTools追踪加密参数步骤
1. 定位请求触发代码
- 打开Chrome DevTools(按F12或右键选「检查」),切到Network面板,清空现有请求记录
- 在路由器页面操作修改OpenVPN端口(随便填个合法端口提交),找到目标POST请求:
https://tplinkwifi.net/cgi-bin/luci/;stok=XXXX/admin/openvpn?form=config - 右键该请求 → 「Copy」→「Copy as fetch」,把请求代码存下来,后面用来改参数重发
- 切到Sources面板,点右上角的「XHR/fetch Breakpoints」,添加规则:输入
/admin/openvpn?form=config,下次提交请求会自动断在发起请求的JS代码处
2. 回溯加密逻辑
- 断点触发后,查看「Call Stack」调用栈,从上层的请求发起代码往下找,找到处理
sign和data的代码段 - 如果代码被混淆,点Sources面板里的「{}」按钮格式化代码,方便阅读
- 直接搜索
sign、data、encrypt、encode这些关键词,定位生成参数的函数 - 在可疑函数上加断点,重新提交请求,一步步调试:
- 观察
data是否是先把包含端口的明文配置加密(比如AES+Base64组合)再输出 sign一般是签名,大概率结合了stok、请求内容、时间戳做哈希(比如SHA-256)
- 观察
3. 修改端口并生成合法参数
- 找到明文转
data的逻辑后,调试时把明文里的端口改成443,执行加密逻辑得到新的data - 按照签名生成逻辑,用修改后的参数重新计算
sign值 - 把之前复制的fetch代码里的
sign和data替换成新值,在DevTools的Console面板执行,发送修改后的请求
二、TP-Link Luci界面的额外技巧
- TP-Link后台的加密逻辑一般打包在
app.js或main.js里,在Sources面板左侧文件列表搜这类文件名 - 如果Base64解码后是乱码,说明是先做了对称加密(比如AES-CBC)再Base64编码,密钥和IV通常硬编码在JS里,或者从页面隐藏元素、Cookie里获取
- 全局搜索
stok相关变量,签名逻辑基本都会用到当前会话的stok值
内容的提问来源于stack exchange,提问作者Yen Cheng Han
相关产品推荐
相关产品推荐

