极验官网https://www.geetest.com/showhttps://www.geetest.com/show
骑毛驴的猴的博客_阿J~_CSDN博客JavaScript,HTTPS,Node.js,小程序,Pythonhttps://blog.csdn.net/qq_26079939声明:本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢!
一、前言
极验官网验证码验证方法共有六种(本文主要记录一下 有感验证:滑块 的笔记)
二、获取验证码
从接口获取到的验证码是裂开的,这里可以去找些大神的代码拼合下图片
三、接口参数分析
主要参数有: gt、challenge、w、以及 callback 时间戳
四、逆向分析
进入到 slide.7.8.6.js,一步一步往前推直达图下;slide文件直达关键字 "\u0077"
到这可以看到 w 值是由 h + u 生成的
观察 h 的生成方式: 加密一组字典 基本字典中都是加密的内容
进入加密函数内部;可以发现有很熟悉的参数;一般这些参数不是AES就是DES的加密;
之后返回数组进行加减乘除的一些运算
在进入未知加密函数中;从中函数可以看的出是什么加密使用了什么加密模块
加密数组得到了接下来就是转码运算了 "m[$_CAGEe(733)]" 进入函数内部;
之前加密的数组传入 '图1' 之后进行了 '图2' 转码操作;生成两组字符串拼接
到这 h 基本逆完了, 基本上就扣了转码部分的代码,代码量函数很少的蛤;
接下来干 u 参数 图1:进入函数内部,未知的加密方法
图2:一串特别的字符串,慢慢调试可以找到是什么加密的这里也是不需要扣 JS
h 跟 u 到这基本结束了, 一步一步看, 接下来逆 h 中加密的 o 是怎么生成的
如图:可以看出 o 主要加密参数 H(t, i[$_CAGDp(154)])、n、e、 r[$_CAGDp(784)]
先分析 H(t, i[$_CAGDp(154)]) 加密 参数为 接口的 challenge 以及一个 t 传入进来的未知
H 加密呢也就出来了 至于什么加密自己猜吧提示:32位的结果
图2: 加密跟 H(t, i[$_CAGDp(154)]) 一样也不需要扣 JS
以上分析可以得出 w 值的来源;是由 h + u 得知; 哦~ 还有几个外部函数传入的参数
分别为:n、e、t ; 跟栈 缺少的参数一览无余都在这了;
主要方法 n[$_CJJIW(1078)][$_CJJJd(1051)] 跟 n[$_CJJIW(1078)][$_CJJJd(1069)]
n[$_CJJIW(1078)][$_CJJJd(1051)]: 同样是字符串转码位移操作
n[$_CJJIW(1078)][$_CJJJd(1069)] : 轨迹数组转码操作也是加加减减
五、隐藏彩蛋
图片的拼合操作在 slide.7.8.6.js 也能找到,其中的数组也是固定的用于拼合图片