今日网站
aHR0cHM6Ly93d3cuY2hhY2V3YW5nLmNvbS9jaGFueWUvaW5kZXg=
无限 Debugger绕过
打开控制台,就进入 debugger 模式了
直接右键 Never Pause Here 就可以了
抓包分析
绕过反调试,刷新页面,可以看到如下的请求包
请求的参数没有什么好分析的,都是明文,主要是返回的内容是加密的
加密定位
先用上 xhr 断点,找到发包的位置,然后向上翻
可以看到处理 response 的逻辑
在这个位置打上断点,然后放过断点让逻辑运行
可以看到这里的 n 就是请求的返回值
然后继续向下分析,直到这个逻辑
这里是对 page_set 的解密
继续向下,就是对返回值内容的解密
继续跟进去,看到这里的解密是一个 AES CBC 解密
p 上面的变量操作基本都是对 key iv 的处理,所以需要逐个分析一下
加密分析
首先是解密的密钥 c
c 的生成逻辑如下
e = r.decode(t) a = e.slice(0, 10) n = l(a, e) s = n.slice(0, 32) c = i.default.enc.Utf8.parse(s)
点进 decode 方法,里面是一大堆对于返回值的处理
看了一下decode逻辑主要是对返回的字符串进行一些字符的替换,然后再调用了 atob,其实就是base64解码
这里的 a = e.slice(0, 10) 就是获取了解码结果的前 10 的字符然后和解码的结果一块进入 l 计算
这里的 l 主要是对解码的结果进行遍历hex ,每次的hex 的结果都拼接起来
拼接的结果取前 48位作为结果返回
之后的 s 就是对 l 的结果切割取值,在之后的步骤就是 CryptoJS 的常规操作
直接导入 CryptoJS 包就可以
npm install crypto-js
简单使用 js 复现一下解密的逻辑
这样就得到解密好的结果了
Python 请求全流程
用 Python 请求结果如下
这个站点在 page 的部分好像还动态加载了字体文件,不知道是否还有对字体做了一些操作
本次操作是在未登录状态下的测试,不知道在登录状态下是否还有其他不同的操作,感兴趣的朋友可以拓展测试一下
领取专属 10元无门槛券
私享最新 技术干货