某验第三代滑动验证码分析(最新):第三部分 Web逆向 原创

osin 21天前 127

接着之前的部分来,老规矩,仅供学习研究,勿用于商业用途

第三步:加密轨迹并提交验证

加密滑动轨迹

我们先来看最终提交验证的接口:
在这里插入图片描述
在这里插入图片描述

可以看到有加密参数w(第三个),想都不用想,这加密里肯定包含滑块轨迹。

加密逻辑在slide.7.8.3.js,需要先解混淆(按第一部分的方式来),然后用老办法,直接搜索"w"(带引号):
在这里插入图片描述

可以看到只有一处匹配,直接打上断点就能断到
在这里插入图片描述

需要注意o[“passtime”]的变化,后面需要替换成轨迹里最后一个点通过的时间。
可以看到这里的加密跟第一个w的加密很像(确实如此)。直接说结论,s就是RSA加密随机生成一个AES密钥得到的值,这里的n["qNfX"]()就是随机生成的密钥,_就是AES加密了对象o。但是我们查看对象o,却并没有发现轨迹类似的数据。难道它没有加密轨迹?这不可能。

我们往上追一个堆栈:
在这里插入图片描述

哈,在这呢!轨迹先被加密成了f,再传到下一层去加密。轨迹数组里每一个小数组代表的含义:

[x, y, passtime]

除了轨迹,f参数的加密还用到了之前获取图片验证码的get.php接口返回的cs值。入口找到了,扣呗。。。不细讲了,后面的RSA+AES加密可以参考第一个w参数的生成

建立轨迹库

当我们搞定轨迹加密之后,还需要建一个轨迹库(当然你也可以使用轨迹生成算法,如果你有的话- -)。建立轨迹库需要拿到真实的滑动轨迹,也就是需要我们手动收集,但如果打断点一条一条收集的话,效率太慢了

说一说我的方案,我是修改了slide.7.8.3.js文件,在文件开头定义了一个全局变量:

window.aaa = [];

然后在轨迹加密的地方将轨迹数组添加进我定义的变量里:

window.aaa.push(r["JPiA"].wHVU);

在这里插入图片描述

这样就可以愉快地收集轨迹啦~由于我们需要的只是手动滑动的轨迹,是不需要每一次都通过验证的,不通过验证的轨迹同样有效(ps:贴个小知识,每一张验证码可以滑动6次,前五次可以随意拖动,最后一次可以拖到缺口处,同样不会验证通过,会切换下一张验证码),尽量每个距离都收集一下。我收集了500条,基本上后面验证够用了。

收集完之后直接控制台打印window.aaa把轨迹数组取出来,然后用代码处理一下,由于量不多,我就保存在了txt文件里了
在这里插入图片描述

一行保存一条轨迹,并且我把轨迹匹配的长度提取到了数组的第一个,方便后面匹配用。

提交验证

到这里基本上没有什么难点了吧,只要缺口距离识别正确,并且匹配到了轨迹,验证通过的成功率还是非常高的
在这里插入图片描述

好了,全部的分析就到此结束了。有坑是必然的,就是要多练习才能有经验

欢迎访问我的原始文章:https://blog.csdn.net/qq_31998745/article/details/120037449

最新回复 (0)
返回