某讯滑块验证码反汇编分析-第三章

查看 110|回复 11
作者:漁滒   
@TOC
collect明文处理
上一篇已经跟到明文的拼接函数,接下来看看get函数的返回值,对什么进行拼接。


1.png (23.93 KB, 下载次数: 0)
下载附件
2024-10-11 16:43 上传

在这一次运行中,第一次get返回的是一个10,是怎么计算出来的呢?


2.png (71.89 KB, 下载次数: 0)
下载附件
2024-10-11 16:43 上传

第一个是模块8返回的,看看里面是什么


3.png (45.39 KB, 下载次数: 0)
下载附件
2024-10-11 16:43 上传

模块8又是调用的模块9


4.png (66.16 KB, 下载次数: 0)
下载附件
2024-10-11 16:43 上传

模块9就是环境检测的函数了,做了一些与环境相关的运算,最终返回10为结果。一般来说不需要太理会中间是怎么计算的,只要知道检测正确的返回值是多少,然后固定这个正确的值就可以了,那么接着下一个get


5.png (6.14 KB, 下载次数: 0)
下载附件
2024-10-11 16:43 上传

第二个get的返回值是一个字符串,看看又是怎么运算出来


6.png (29.81 KB, 下载次数: 0)
下载附件
2024-10-11 16:43 上传

实际这是一个固定值,没有任何的运算。如此类推,一直把37个get函数都执行,然后把返回值拼接


7.png (58.67 KB, 下载次数: 0)
下载附件
2024-10-11 16:43 上传

拼接完成后调用了【4181】函数


8.png (18.94 KB, 下载次数: 0)
下载附件
2024-10-11 16:44 上传

这里就可以看到待加密的明文字符串,然后这里会调用多次,进行分段加密,结尾是 "]," 的时候,才是最后一次


9.png (44.95 KB, 下载次数: 0)
下载附件
2024-10-11 16:44 上传

【4181】函数可以理解为一个填充的函数,然后就调用【10009】函数进行加密


10.png (45.7 KB, 下载次数: 0)
下载附件
2024-10-11 16:44 上传

加密函数又调用了7701函数


11.png (117.53 KB, 下载次数: 0)
下载附件
2024-10-11 16:45 上传

这里看到一些特殊的字符串,实际是密钥的初始化


12.png (58.23 KB, 下载次数: 0)
下载附件
2024-10-11 16:45 上传

可以看出是一个把【>> 5】魔改为【>>> 5】的tea加密,密钥是4个int,也就是16字节。在几天,或者十几天内,看起来是不变的,那么可以用ast动态还原出密钥,也可以手动获取key用它个一段时间。在发文时的key为【QiPXNgNXhnjVfFhT】。既然加密知道了,tea是对称加密,用相同的密钥可以解密出密文,那么我们那网页生成的参数试试


13.png (66.07 KB, 下载次数: 0)
下载附件
2024-10-11 16:46 上传

非常漂亮的解密出明文,后面只要自己构造参数,然后加密就可以得到可用的collect参数。
其中计算滑块距离使用的是ddddocr三方库
距离生成轨迹使用帖子【极验反爬虫防护分析之slide验证方式下图片的处理及滑动轨迹的生成思路】提供的帖子
vData明文处理
经过前面的铺垫,部分重复的内容会适当跳过。需要发送请求,还需要一个vData,而这个参数是在另外一个js文件中,


14.png (83.48 KB, 下载次数: 0)
下载附件
2024-10-11 16:47 上传

可以看到生成vData的js也是一个webpack的代码


15.png (47.93 KB, 下载次数: 0)
下载附件
2024-10-11 16:47 上传

直接查找send方法,绑定的是【20539】函数,里面实际调用的【getCaptchaData】这个函数,地址是【22317】


16.png (55.37 KB, 下载次数: 0)
下载附件
2024-10-11 16:47 上传

明文就是这一个对象,里面包含8个固定的键名,除了【key】这个键以外,其他的值都是固定的。key的计算就是把【tlg】中的每一个值看做下标,然后在【sess】上取值。一般来说collect都是上千位,所以tlg是四位数,所以key的值也是四位。


17.png (28.26 KB, 下载次数: 0)
下载附件
2024-10-11 16:48 上传

拼接好了以后就进入【encryptData】方法


18.png (72.43 KB, 下载次数: 0)
下载附件
2024-10-11 16:48 上传

首先是进行填充到16的倍数


19.png (68.39 KB, 下载次数: 0)
下载附件
2024-10-11 16:48 上传

然后是打乱字符串顺序,最后就是那个魔改的tea加密,密钥固定为【34e2c8f07b5169ad】


20.png (26.2 KB, 下载次数: 0)
下载附件
2024-10-11 16:48 上传

最后的encode是一个base64编码,只是编码表被修改了,其他都是一样的。逻辑理顺了之后,使用python跑起来试试


21.png (117.62 KB, 下载次数: 0)
下载附件
2024-10-11 16:48 上传

完美!!!

下载次数, 下载附件

漁滒
OP
  


zhengyg 发表于 2022-12-26 09:37
37个get顺序也不是固定的,这个您是怎么解决的呀

是的,这个也是不固定,并且我试过固定也是不行的。所以我是使用了类比前面的方法,每一个get给一个助记符,把每一次不同顺序的函数,转换为不同顺序的助记符,最后就可以根据不同的助记符调用不同的函数得到结果
word11   


lhlking 发表于 2022-12-22 08:30
现在主流的验证人机的方式就是滑块,点击文字或者是图片内容识别,不知道哪种更有效

我觉得内容还是很不错的,期待作者的更新其它内容
ruikai   

火钳刘明
aceronethree   

学习一下
helloword121   

感谢分享
juanxincai017   

大佬牛逼
social666   

学习一下
yippee   

感谢大佬分享
limlibgiag   

学习一下
您需要登录后才可以回帖 登录 | 立即注册

返回顶部