-
-
[求助] 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编辑
,原因:
赞赏
他的文章
赞赏
雪币:
留言: