1回答

0收藏

某验第三代滑动验证码分析(最新):第三部分

信息分享 信息分享 1186 人阅读 | 1 人回复 | 2021-09-01

接着之前的部分来,老规矩,仅供学习研究,勿用于商业用途
第三步:加密轨迹并提交验证加密滑动轨迹
我们先来看最终提交验证的接口:



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

加密逻辑在
  1. slide.7.8.3.js
复制代码
,需要先解混淆(按第一部分的方式来),然后用老办法,直接搜索"w"(带引号):


可以看到只有一处匹配,直接打上断点就能断到


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

我们往上追一个堆栈:


哈,在这呢!轨迹先被加密成了
  1. f
复制代码
,再传到下一层去加密。轨迹数组里每一个小数组代表的含义:
  1. [x, y, passtime]
复制代码

除了轨迹,
  1. f
复制代码
参数的加密还用到了之前获取图片验证码的
  1. get.php
复制代码
接口返回的
  1. c
复制代码
  1. s
复制代码
值。入口找到了,扣呗。。。不细讲了,后面的RSA+AES加密可以参考第一个w参数的生成
建立轨迹库
当我们搞定轨迹加密之后,还需要建一个轨迹库(当然你也可以使用轨迹生成算法,如果你有的话- -)。建立轨迹库需要拿到真实的滑动轨迹,也就是需要我们手动收集,但如果打断点一条一条收集的话,效率太慢了

说一说我的方案,我是修改了
  1. slide.7.8.3.js
复制代码
文件,在文件开头定义了一个全局变量:
window.aaa = [];
然后在轨迹加密的地方将轨迹数组添加进我定义的变量里:
window.aaa.push(r["JPiA"].wHVU);


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

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


一行保存一条轨迹,并且我把轨迹匹配的长度提取到了数组的第一个,方便后面匹配用。
提交验证
到这里基本上没有什么难点了吧,只要缺口距离识别正确,并且匹配到了轨迹,验证通过的成功率还是非常高的


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


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

使用道具 举报

回答|共 1 个

hypn0s

发表于 2021-10-8 16:07:38 | 显示全部楼层

受益匪浅
回复

使用道具 举报