![](https://img-blog.csdnimg.cn/img_convert/60bc690b49184d66fa825a71dbd92edf.png)
声明
本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!
案例目标
爱企查百度安全验证
百度搜索:aHR0cHM6Ly93YXBwYXNzLmJhaWR1LmNvbS9zdGF0aWMvY2FwdGNoYS8=
以上均做了脱敏处理,Base64 编码及解码方式:
import base64
# 编码
# result = base64.b64encode('待编码字符串'.encode('utf-8'))
# 解码
result = base64.b64decode('待解码字符串'.encode('utf-8'))
print(result)
案例分析
抓包
打开开发者工具,刷新网页,network 中,第一个 viewlog 响应返回 as、ds、tk 参数,后续请求会需要:
![](https://img-blog.csdnimg.cn/img_convert/375fc67c4ff896774cfbf55278b0dd59.png)
第一个 viewlog 接口响应预览
getstyle 接口请求参数需要第一个 viewlog 接口返回的 tk 参数,ak 为定值,和极验、易盾一样,不同网站都有个类似于盾 id 的东西:
![](https://img-blog.csdnimg.cn/img_convert/5541859c0c84a3c9d1bc6cb8abcf749f.png)
getstyle 接口请求参数
响应返回 backstr 和验证码图片链接:
![](https://img-blog.csdnimg.cn/img_convert/6c781c30c79ad217a47ab4647acdc021.png)
getstyle 接口响应预览
第二个 viewlog 接口校验是否成功,请求参数中 ak 是定值,as 是第一个 viewlog 接口的响应返回的,fs 是滑动轨迹、旋转比率、backstr、滑动开始位置、window.screen 等经过 AES 加密得到:
![](https://img-blog.csdnimg.cn/img_convert/4a312d403c43ab40f24d5c1050e6764b.png)
第二个 viewlog 接口请求参数
op 为 1 则成功,0 则失败,v2 版本的旋转验证码,失败为 3,响应返回的 ds、tk 为校验通过后的 c 接口的请求参数:
![](https://img-blog.csdnimg.cn/img_convert/4316b9c9c852a39c5c4bb7681aef64a1.png)
第二个 viewlog 接口的响应预览
验证通过后 c 接口响应返回重定向后的页面链接,请求参数中 ak 是定值,ds、tk 为第二个 viewlog 接口响应返回的:
![](https://img-blog.csdnimg.cn/img_convert/bd7c293174ed6873b3e43bde7893fad9.png)
c 接口请求参数
![](https://img-blog.csdnimg.cn/img_convert/611e413bba78f51e8b93df7112153d64.png)
c 接口响应预览(成功)
失败则会响应返回:
![](https://img-blog.csdnimg.cn/img_convert/2cd235eff5c32c24bccdc4fc0d0cb38b.png)
c 接口响应预览(失败)
逆向分析
从 viewlog 接口的堆栈中跟进去:
![](https://img-blog.csdnimg.cn/img_convert/0572ff01676058572602161865e074b2.png)
在第 4592 行打下断点,滑动滑块断住后往上跟栈到 o 中:
![](https://img-blog.csdnimg.cn/img_convert/e93c5abad854589fe090e41fcc50ca23.png)
o 即为 fs 参数的值:
![](https://img-blog.csdnimg.cn/img_convert/13f7dc13a53b1dc2632ab3fe4625856a.png)
o 定义在第 5566 行,将 i 加密后得到,i 为初始坐标、轨迹、旋转比率等转换为字符串后得到:
![](https://img-blog.csdnimg.cn/img_convert/e8197fd87c0f27d4ba8bb2a1372d3788.png)
跟进到加密方法 r.encrypt 中,很明显为 AES 加密,并且经过测试加密算法没有魔改,直接引库即可:
![](https://img-blog.csdnimg.cn/img_convert/f62945612c2fdb2d493df4a214101b29.png)
ac_c 参数:
![](https://img-blog.csdnimg.cn/img_convert/e80616e0e2ad5b4358dc5d2cd7aaeba7.png)
结果验证
百度旋转验证码 v1
![](https://img-blog.csdnimg.cn/img_convert/8311fe7f7517e1b18bacd92953b53650.png)
百度旋转验证码 v2,需要两次校验:
![](https://img-blog.csdnimg.cn/img_convert/0bb574f567ea55d36a3ab341fcacf382.png)