← 返回文章列表

深度解析:某盾js逆向解析 -fp值

某盾js逆向解析-fp值某盾js解析-轨迹提交&还原数组某盾js逆向解析-actoken(未完成)某盾js逆向解析先上链接网易易盾滑块举例打开F12刷新看请求https://c.dun.163.com/api/v2/get这个请求id:代表

某盾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 拿到滑块的图