(注:如有侵权,请联系作者删除)
目标网站:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vYWRhcHRpdmUtY2FwdGNoYS1kZW1v
极验4代w值定位
搜索"\u0077"定位到入口加密位置
var i = (0,m[$_BIBD_(86)])(f[$_BIBCo(86)][$_BIBCo(588)](e), n)
我这里对Unicode编码进行解码,这样看方便一点
w值就是i变量,经过(0, m[$_BIBD_(86)])函数传入两个参数f[$_BIBCo(86)][$_BIBCo(588)](e)、n
生成w值。
逆向的过程自己体验,理解js代码做了什么操作,加上一些合理的猜测就可以python还原了,所以我直接写还原流程。
python还原流程
算法涉及的加密:AES/CBC/PKCS7, RSA/PKCS1_v1_5
加密数据e值:
{
"device_id": "",
"lot_number": "16fb341a3b8741ce8f62eee3319d007a",
"pow_msg": "1|0|md5|2024-05-17T13:44:16.516615+08:00|24f56dc13c40dc4a02fd0318567caef5|16fb341a3b8741ce8f62eee3319d007a||ae6f4601b7e09856",
"pow_sign": "5ee960cae6811ecb82ac9ffea9a3b3be",
"geetest": "captcha",
"lang": "zh",
"ep": "123",
"biht": "1426265548",
"Fwcs": "5O2F",
"em": {
"ph": 0,
"cp": 0,
"ek": "11",
"wd": 1,
"nt": 0,
"si": 0,
"sc": 0
}
}
1、生成16位随机字符串:n值
def getRandomStr():
import random
randomStr = ''
for i in range(4):
random_number = int(65536 * (1 + random.random()))
hex_string = hex(random_number)[3:]
randomStr += hex_string
return randomStr
2、对n值进行RSA加密:_值
var _ = r[a][$_DAEDQ(930)][$_DAECf(951)](n);
3、对加密数据e进行AES加密,key为步骤1中的n:u值。
var u = r[a][$_DAEDQ(966)][$_DAECf(951)](e, n);
4、最后w = u + _
总结
其他细节方面我没有写,请自行尝试,但是w值如果加密错误会返回
geetest_1715926155227({"status":"error","code":"-50002","msg":"param decrypt error","desc":{"type":"defined error"}})