- 某盾js逆向解析 -fp值
- 某盾js解析- 轨迹提交&还原数组
- 某盾js逆向解析 - actoken(未完成)
某盾js逆向解析
先上 链接 网易易盾 滑块举例
打开F12 刷新 看请求
https://c.dun.163.com/api/v2/get
这个请求
id: 代表网站的ID
fp: fingerprint
cb: 随机生产
width: 验证码图片宽度
接口返回
token 是本次验证的编号, bg背景图 front 滑块图
所以要找到 fp和cb 的生成代码
在跟代码 之前 要把js替换成本地的 因为 他的代码后面有个v 刷新后 断点会失效 调试很麻烦
利用 charles或fiddler 或其他工具 能替换就行
看get请求的堆栈 得知是从 core js文件发出的
格式化一下 搜索 fp:
多下断点尝试下 就知道了 从此得知 cb = s(), fp = n.fingerprint
先看 s 函数
大概就是这几个方法 扣出对应js调用即可
再看 指纹 fp
搜索 fingerprint 找到 fingerprint 赋值的地方
得知 = window.gdxidpyhxde 再搜索 gdxidpyhxde 这个就搜不到第二个地方了
所以需要hook 他生成的时候 利用 油猴
(function() {
'use strict';
var fp2 =window.fp;
Object.defineProperty(window,'gdxidpyhxde',{
get:function(){
console.log("调用了fp",fp2)
return fp2;
},
set:function(val){
console.log("设置了fp",val)
debugger;
}
})
// Your code here...
})();
首先清除浏览器缓存然后刷新
等断点展示出 值 的时候 向上查找
给 window赋值
这个方法里 的h就是指纹fp了
h = h + u[7] + p
u[7] = ':'
p = '当前时间戳'
就是这么生成的 继续跟h的逻辑
h有好几个赋值的地方 都下断点 看看会走哪个
W函数内 会先把 gdxidpyhxde 设为null 然后再利用 P 重新赋值
将此函数内 h = 的地方都打上断点
得知 h = Oe 就这么网上找
Oe = K.join("")K 是 a(U, Ie, $e) push进来的
这是他们三个的值 所以要找到U
调试的结果就是 U 是在 函数 c 内push的
最终会追踪到环境验证的地方
分别检测 webgl color canvas 字体 ActiveXObject plugins 等等
fp -> c6Jr9z1\xk1Du\xwRS+hit42CLBtU42rU4HX\hC/\txSbM8VpNsLNv4b1AwYv\j76pQAYouzwhaas12ybD8p\q/Ko/vHk3UCVB2jNCxL8UUAy60Igk1vPSh9PZT0iGlp72qijTGNLcV2CLqchgp6XUCP14Ps+n6MGe2jf3q4Q29PfZKQ:1627702026076
cb -> TNXaTkGh2T5sHUXEAfpDNczFA97ITpS7QJNJHaljLHZSDuX1nN1\iz4aRciVfS5d
{"data":{"bg":["https://necaptcha.nosdn.127.net/25c099346a1c4a478560e3ebfb64d920.jpg","https://nos.netease.com/necaptcha/25c099346a1c4a478560e3ebfb64d920.jpg"],"front":"","token":"22200686a7594574a1764f87cd254d58","type":9,"zoneId":"CN31"},"error":0,"msg":"ok"}
最终即可得到正确的fp 拿到滑块的图