本案例中所有内容仅供个人学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
第一个w值
w: i + r
R值:
var r = t[$_CEFDY(1196)]()
r参数可以扣js也可以直接Python还原(RSA)
可以参考之前的文章,很详细
i值:
o = $_BEH()[$_CEFCV(1127)](fe[$_CEFDY(431)](t[$_CEFCV(370)]), t[$_CEFDY(1143)]())
{
"gt": "019924a82c70bb123aae90d483087f94",
"challenge": "b9c502bf55667e37d33f93c5a5a0ca62",
"offline": false,
"new_captcha": true,
"product": "float",
"width": "300px",
"https": true,
"api_server": "apiv6.geetest.com",
"protocol": "https://",
"type": "fullpage",
"static_servers": ["static.geetest.com/", "static.geevisit.com/"],
"beeline": "/static/js/beeline.1.0.1.js",
"voice": "/static/js/voice.1.2.4.js",
"click": "/static/js/click.3.1.0.js",
"fullpage": "/static/js/fullpage.9.1.8-bfget5.js",
"slide": "/static/js/slide.7.9.2.js",
"geetest": "/static/js/geetest.6.0.9.js",
"aspect_radio": {"slide": 103, "click": 128, "voice": 128, "beeline": 50}, "cc": 12, "ww": true,
"i": "-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1"}
跟进去 发现iv等字样,其实和之前的是一样的AES算法,
i = R[$_CEFDY(1197)](o)
R方法抠出来 加密aes加密后的参数 可以只扣$_HBR
方法也可以往大的扣
完成第一个w!
第二个w值
直接w是搜索不到的,混淆了的,
w就是上图的位置,可以通过跟栈找到。
$_CEDf
进入到$_CEDf
方法 定位w生成位置:
使用的方法,我们发现只是名字不同 其实是一样的。
接下来看看r参数
r参数
{
"lang": "zh-cn",
"type": "fullpage",
"tt": "M/l8Pjp8Pjp--uU(W6(bq,f0,e5,q(.*1N*Qg73).7,)1-1MM:@M9?)P)O-01--Aj5-M9AU3-O))261/1xMU?)*1/-N1:cFj))M(b((,eq5b,b5(((5ee,e5mI?5Pb9:CBgJ,1EI(b9-5/)M9,)(E-(/)()MU(9-5-)M9(9/)M)(91*-c4)M9bE-5-)M9(E-:(-5-)ME(E5(/)(0qqqqqM*oe8,58e(b5((,e5ejh)M)M9(EAk(bM-db95Y-,255,bU4)(?c(-)4*M9-5/)(91*-Qb94*(9bE-5/),*M9c9/)M)qqb",
"light": "DIV_0",
"s": "c7c3e21112fe4f741921cb3e4ff9f7cb",
"h": "321f9af1e098233dbd03f250fd2b5e21",
"hh": "39bd9cad9e425c3a8f51610fd506e3b3",
"hi": "09eb21b3ae9542a9bc1e8b63b3d9a467",
"vip_order": -1,
"ct": -1,
"ep": {
"v": "9.1.8-bfget5",
"$_E_": false,
"me": true,
"ven": "Google Inc. (NVIDIA)",
"ren": "ANGLE (NVIDIA, NVIDIA GeForce GTX 1650 (0x00001F82) Direct3D11 vs_5_0 ps_5_0, D3D11)",
"fp": [
"move",
951,
141,
1706509927183,
"pointermove"
],
"lp": [
"up",
845,
21,
1706509927979,
"pointerup"
],
"em": {
"ph": 0,
"cp": 0,
"ek": "11",
"wd": 1,
"nt": 0,
"si": 0,
"sc": 0
},
"tm": {
"a": 1706509925631,
"b": 1706509925811,
"c": 1706509925811,
"d": 0,
"e": 0,
"f": 1706509925633,
"g": 1706509925633,
"h": 1706509925633,
"i": 1706509925633,
"j": 1706509925633,
"k": 0,
"l": 1706509925672,
"m": 1706509925805,
"n": 1706509925807,
"o": 1706509925813,
"p": 1706509926014,
"q": 1706509926014,
"r": 1706509926015,
"s": 1706509926066,
"t": 1706509926066,
"u": 1706509926069
},
"dnf": "dnf",
"by": 0
},
"passtime": 36179,
"rp": "175b6ca9fb41fbea4516588704878dbf",
"captcha_token": "1954132306异常",//541381339正常
"gdyf": "kqy8o0w7"
}
坑点:
原因是替换了文件导致,可能被检查到了 返回的captcha_token是异常的,所以一直验证失败。
通过对比和调试发现很多参数都是固定的s,h,hh,hi等等都是固定的MD5
"rp": MD5(gt+challenge+passtime)
tt是轨迹进行加密,我直接写死!测试可以!
第三个 w
方法和之前一样,可以参考之前写的非常详细的文章【极验三滑块】
结果展示:
OK 就这样 大体的算法逻辑是没变的