极验四代滑块验证码
声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【小马哥逆向】联系作者立即删除!
某验流程
-
目标:极验四代滑块验证码,w 参数逆向
-
主页:
aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v
-
加密算法:RSA、AES
流程分析
进入网页后,打开开发者人员工具进行抓包,点击滑动拼图验证,滑动滑块,抓包到 verify?callback=geetest_,包含了一些参数:
captcha_id:验证码 id,固定值;
client_type:表示 web 端;
lot_number;
risk_type:验证码类型,例如滑块为 slide,无感为 ai;
payload;
process_token;
w:加密参数,由轨迹、滑动时间、滑动距离、userresponse、device_id、pow_msg 等参数加密得到;
callback:geetest_ + 时间戳,主要作用是防止缓存。
其中重要的有captcha_id,lot_number,process_token,payload,w
captcha_id
captcha_id可以直接搜索
lot_number,process_token,payload
lot_number搜索值b0552010c71f48a68acb6dda6609a1f8,发现是在load?处生成
其中lot_number,process_token,payload都是load?返回的
分析load接口
captcha_id:验证码 id,固定值;
challenge:动态变化;
client_type:表示 web 端;
risk_type:验证码类型,例如滑块为 slide,无感为 ai;
lang:语言;
callback:geetest_ + 时间戳,主要作用是防止缓存。
captcha_id上面已经得到,现在找challenge
可以看到,challenge 参数的值由 uuid 函数生成,扣出即可。
w
打下断点滑动滑块断住后,向上跟栈到 ,到"\u0077": r,"\u0077" 即字母 w 的 Unicode 值,i 即 w 参数的值:
向上跟栈,找到 e 参数中各部分定义生成的位置
passtime 是熟悉的滑动时间和轨迹,setLeft 为识别出来的缺口距离,userresponse,a 为 setLeft 参数的值 t[$_FFEIS(1473)] 为定值1.0059466666666665
这里是生成
"\u0070\u006f\u0077\u005f\u0073\u0069\u0067\u006e":pow_sign
"\u0070\u006f\u0077\u005f\u006d\u0073\u0067":pow_msg
"\u006c\u006f\u0074\u005f\u006e\u0075\u006d\u0062\u0065\u0072":device_id
"\u0064\u0065\u0076\u0069\u0063\u0065\u005f\u0069\u0064":lot_number
device_id 的值其实是不变的,但是寻找一下他的生成位置
pow_msg 值 和 pow_sign 值的生成
通过挂载代理的方式,可以发现,他只取了 s 的options 中的 pt, 所以只需要补 {“options”:{“pt”: “1”}} 即可 ;并未校验滑动轨迹
结果
本文由 mdnice 多平台发布