深度解析:某某盾-滑块验证-自动获取validate值-(逆向js+python)
我是标题1.从get?网站获取滑块图片以及token1.1获取fp值1.2获取cb值1.3模拟发包2.获取滑块移动距离3.发包获取最终的validate值3.1轨迹生成3.2check网站发包3.3获取data值4.结论本实验是根据某某盾示
我是标题
1.从get?网站获取滑块图片以及token
1.1获取fp值
1.2 获取cb值
1.3 模拟发包
2.获取滑块移动距离
3.发包获取最终的validate值
3.1轨迹生成
3.2 check网站发包
3.3 获取data值
4.结论
本实验是根据某某盾示例网站
主要分为两个部分
1.从get?网站获取滑块图片以及token
2.根据获取的图片获取滑块移动距离
3.根据移动距离和token发包到check?网站得到validate值
1.从get?网站获取滑块图片以及token
模拟网站发包,需要获取fp值和cb值
1.1获取fp值
网站的js做了混淆,看起来很乱,但是不影响逆向寻找,js代码,具体扣代码的方法就不再介绍了。
可以直接搜索图上关键字可以在网站上找到js具体的位置。
需要注意的是混淆的数组,需要加上下面两个函数,将数组的顺序改为正确的顺序。
还需要注意fp是和网站的域名相关,就是验证应用在的网站域名,设为输入变量hrefff。
传入变量所在位置
1.2 获取cb值
同样获取cb的js代码也做了混淆,需要加入下面两个函数,注意是两个函数。第二个函数要传入参数。
cb原代码在webpack里面,需要加载器。
第一个框为加载器,可以用模板,也可以从源网站拷贝执行器。
第二个框为所需要方法,字典寻找方式。原代码是用十六进制数组方式寻找。具体可以从源代码的加载器寻找0x**,找到具体方法。
第三个框为获取cb执行代码。
1.3 模拟发包
本文中所有用的头文件
import
cv2
import
numpy
as
np
import
requests
import
execjs
import
json
import
re
import
os
import
random
import
time
用python模拟发包
get_web
=
'https://xxxxx/api/v3/get'
payload
=
{
"referer"
:
"https://xxxxx/trial/jigsaw"
,
"zoneId"
:
"CN31"
,
"dt"
:
"yyyyyy"
,
"acToken"
:
"undefined"
,
"id"
:
"yyyyyy"
,
"fp"
:
Get_fp
(
)
,
"cb"
:
Get_cb
(
)
,
"https"
:
"true"
,
"type"
:
2
,
"version"
:
"2.25.0"
,
"dpr"
:
"1.25"
,
"dev"
:
1
,
"ipv6"
:
"false"
,
"runEnv"
:
10
,
"group"
:
""
,
"scene"
:
""
,
"lang"
:
"zh-CN"
,
"sdkVersion"
:
"unde