某验4代滑块逆向分析
本文分析了某验滑块验证的加解密逻辑,主要包括获取滑块数据和校验滑块两个关键步骤。在获取数据阶段,通过load接口获取lot_number、pow_detail.datetime等重要参数。校验阶段重点解析了w参数的加密流程,包括userresponse计算、pow_msg/pow_sign生成、lotnum截取处理等核心算法。文章详细说明了AES和RSA的混合加密过程,以及各加密点的具体实现方法,
某验滑块加解密逻辑
声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关。
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除,请各位自觉遵守相关法律法规。
开始
上地址:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v
1、获取滑块数据
刷新页面,load接口为获取滑块数据和后续使用数据。
请求参数:
callback=xxxxxxxx&captcha_id=54088bb07d2df3c46b79f80300b0abbe&challenge=a2baf011-e555-44b8-b85d-ba1b53c75c92&client_type=web&risk_type=slide&lang=zh-cn
callback 避免缓存使用
captcha_id id值由系统下发,固定,可直接从indexjs文件内直接匹配
challenge 由JS生成,uuid值,貌似不要这个参数也行
client_type 客户端类型
risk_type 滑块类型
lang 语言
返回结果中有后续需要用到的值,重要的:lot_number;pow_detail.datetime;payload;process_token;payload_protocol;pt
2、校验滑块
verify接口为校验接口。
请求参数:
callback 去缓存
captcha_id 同上
client_type 同上
lot_number 上一步结果
risk_type 同上
payload 上一步结果
process_token 上一步结果
payload_protocol 上一步结果
pt 固定值?上一步结果,或者默认1?
w 加密值!
返回结果:
pass_token即为后续通过token
关键加密参数W
w参数:
1、直接搜索加密参数w:基本就可以搜到,大致位置:
此方法的关键入参:
{
"setLeft": 120,# 滑动距离
"passtime": 3635,# 滑动时间
"userresponse": 121.29061845558414,# 根据滑动距离计算
"device_id": "",
"lot_number": "c03079fe900a4e6a9957ea554cf3794e",# load接口返回
"pow_msg": "1|8|sha256|2026-01-15T09:45:30.974438+08:00|54088bb07d2df3c46b79f80300b0abbe|c03079fe900a4e6a9957ea554cf3794e||4fe508d342e7ef66",# 加密点1后续处理
"pow_sign": "00c58dc8ebf08c52441887c11ed610e779c8e7cdd70a3068b8204f948ffa02c7",# 加密点2,同1一块处理
"geetest": "captcha",# 固定
"lang": "zh",# 固定
"ep": "123",# 固定
"biht": "1426265548",# 固定
"gee_guard": {
"roe": {
"aup": "3",
"sep": "3",
"egp": "3",
"auh": "3",
"rew": "3",
"snh": "3",
"res": "3",
"cdc": "3"
}
},# 固定
"TYSC": "opMx",# 固定
"e6a079": {
"030f37": {
"ea554cf3": "e6a995"
}
},# 加密点3,lotnum截取嵌套值
"em": {
"ph": 0,
"cp": 0,
"ek": "11",
"wd": 1,
"nt": 0,
"si": 0,
"sc": 0
}# 固定,driver校验结果等
}
加密流程, aes(symmetrical)+ rsa(asymmetric):

1.1、先把这个数据json化成字符串,如果Python实现记得去除json字符串内的空格。
1.2、获取16位随机数,
1.3、rsa publick跟栈即可得,固定, 1.2结果执行rsa加密
1.4、执行aes加密,加密值1.1结果,key为1.2结果,iv固定值跟栈即可
最终返回:1.4结果+1.3结果
userresponse计算处理
直接搜索定位即可,大致是set_left / 1.0059466666666665 + 2
加密点1,2加密处理
直接搜索关键字,下断点调试:
加密流程:
需要的参数:pow_detail, lot_number, captcha_id
1.1、获取pow_detail数据。 lot_number, captcha_id,|拼接
1.2、获取随机字符串16位
1.3、1.1结果+1.2结果进行sha256哈希,
1.4、循环1.2,1.3直到满足条件,返回符合条件的1.1结果+1.2结果作为pow_msg,sha256结果作为pow_sign
加密点3lotnum截取值
截取数值确定:好像是当天固定,直接从load接口返回结果中static_path和js字段拼接的JS内匹配即可:

上述图片解释:(n[13:15]+n[3:5])+.+(n[1:3]+n[26:28])+.+(n[20:27]) :固定长列表内的取值下标90(结果类似n[13,19]),也需要用到
长列表直接使用Python重写即可,解析处理位置:
最终两段数据组合取lotnum下标截取,需要把后面每位+1最终成:【13,16】+【3,6】【1,4】+【26,29】【20,28】【13,19】,然后值再做成嵌套字典
这段逻辑是截取lotnum的值
终两段数据组合取lotnum下标截取,需要把后面每位+1最终成:【13,16】+【3,6】【1,4】+【26,29】【20,28】【13,19】,然后值再做成嵌套字典[外链图片转存中…(img-dw4bPHs4-1768446085798)]
这段逻辑是截取lotnum的值
至于滑动距离直接带带弟弟搞吧
附上成功截图

如有侵权,请联系我删除!
更多推荐



所有评论(0)