声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
前言
在一年多之前搞过一个百度V1旋转验证码: https://mp.weixin.qq.com/s/ETBJ-gmMlMeowv6977OmAg
时隔一年多 来搞(水)一篇旋转V2验证码。炒一波冷饭吧。
抓包分析
其实和V1的流程差不多。
只是请求和校验参数不同
这里v2流程简单说说
init 获取参数===> cap_style 获取图片 === > log 识别+轨迹 获取 ====> 识别完成
这里前面都没什么好说的 。记得要把有用的值都要提取出来哦(spin-0)
直接看最后一个参数
先看看传参

重点关注下 fuid 和 fs
fuid; 环境生成的加密参数
fs:和v1差不多
再来看下回参

其实没啥好主意的。返回的as和tk还是原来的只是置为有效的。
返回的 op
1 代表成功
3 代表失败
加密分析
fuid
定位点如下:

这里看下参数。其实基本都是环境参数。

常规的AES加密 直接导库运行即可。 可写死。
fs
定位点如下:

可以看到 序列化了 一下这个this.rzData 然后 传了两个参数给 u.Li 这个参数。
然后u.Li 基于this.secondHandle 判断加密方法。

先不管里面的加密 先把外面的伪造好。
这里外层经过了两次 AES加密 得到了最终的值。
这里先看下第二次AES加密 即第一次加密完之后。又加密了一次
有个 this.newKey.
这里是如下图getNewKey的地方。参数为as

都解决完外层加密。这里看看rzData参数了

rzData

如上图所有
this.rzData中共有以下主要参数
- captchalist.spin-0.backStr
- captchalist.spin-0.ac_c
- captchalist.spin-0.back
- captchalist.spin-0.cr
- captchalist.spin-0.mv
- captchalist.spin-0.p
- common.cr
- common.mv
- common.simu
这里详细来看看。
captchalist.spin-0.backStr 这里不说了
common.simu: 默认写死 0 不解释
common.cr: 返回的设备信息
captchalist.spin-0.mv:轨迹

captchalist.spin-0.back
captchalist.spin-0.cr

captchalist.spin-0.p:

从这里往下追。
最终发现在这个地方生成p值

这里的originStr是之前接口返回的 spin-0 值。
count 是 接口中的c。
captchalist.spin-0.ac_c

从此处往上追栈。
结果发现ac_c 的地方

继续往上追到最后

最后拼接下所有的参数。
影响的点其实就几个
- ac_c
- p
- 轨迹
并且轨迹也不是很严格。
所以拼接下几个请求应该就能完成后续的请求。
结语
完成装逼图如下

3665

被折叠的 条评论
为什么被折叠?



