首页
社区
课程
招聘
[求助] fingerprint.js Pro v3 逆向
发表于: 2025-9-14 20:19 607

[求助] fingerprint.js Pro v3 逆向

2025-9-14 20:19
607

分析fingerprint.js Pro采集项的时候发现某几个采集项在采集过程中一些属性名被加密了,采用的是哈希验证的方式获取属性名,但是在chrome 138浏览器和edge中发现某几个属性不存在,而这几个属性名恰好是作为某个加密函数的密钥使用的,想问有无遇到相同问题的师傅是如何解决的

相关代码如下,就是getPropertyNameByHash(t, 3858258232)会返回null

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function maybeGetEncKey() {
  const n = new Image().style;
 
  console.log([getPropertyNameByHash((t = n), 2882756133), getPropertyNameByHash(t, 3858258232)])
  return reshuffleStr(
    [getPropertyNameByHash((t = n), 2882756133), getPropertyNameByHash(t, 3858258232)], // webkitTapHighlightColor  null
    [
      18, 23, 22, 11, 23, 17, 3, 20, 4, 22, 19, 11, 25, 13, 23, 22, 7, 7, 17,
      18, 4, 18, 11, 8, 11, 8, 3, 5, 2, 4, 3, 3, 5, 6, 5, 3, 1, 2, 2, 0, 0,
    ],
  );
  var t;
}
 
function getPropertyNameByHash(Obj, hash) {
  let e = Obj;
  for (; e;) {
    const propertyNames = Object.getOwnPropertyNames(e);
    for (let e = 0; e < propertyNames.length; e++) {
      const r = propertyNames[e];
      if (getHash(r) == hash) return r;
    }
    e = Object.getPrototypeOf(e);
  }
  return "";
}
 
let keyArr;
function getHash(str) {
  return getHash_(convertToUint8Array(str));
}
function getHash_(str) {
  const t = convertToIUint8Array(str);
  keyArr =
    keyArr ||
    (function () {
      let n;
      const t = new Uint32Array(256);
      for (let e = 0; e < 256; e++) {
        n = e;
        for (let t = 0; t < 8; t++)
          n = 1 & n ? 3988292384 ^ (n >>> 1) : n >>> 1;
        t[e] = n;
      }
      return t;
    })();
  let e = -1;
  for (let r = 0; r < t.length; r++) e = (e >>> 8) ^ keyArr[255 & (e ^ t[r])];
  return (-1 ^ e) >>> 0;
}

传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-9-14 20:20 被SGSGsama编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回