声明:案例分析仅供学习交流使用,勿用于任何非法用途。如学习者进一步逆向并对版权方造成损失,请自行承担法律后果,本人概不负责。
首先查看登录时的POST请求,发现加密字段k。

通过请求调用可以定位到高度可疑的 secendVerify() 函数。

格式化后查看,找到了指纹参数来源。

fingerprint 由下面相关函数赋值。
setFingerprint: function() {
var _this = this;
recognition.get({
preprocessor: function(key, value) {
var icCache = $.cookie('ICCACHE');
if (key === 'plugins' && icCache) {
return value + ',' + icCache;
}
return value;
}
}, function(components) {
var fp = recognition.x64hash128(components.map(function(pair) {
//这里是关键
return pair.value;
}).join(), 31);
var secretCode = '';
switch (fcacheType) {
case 'A':
secretCode = _this.handleCode(window.btoa(fp), 'int', '+', 0, 3) + '@' + fp + '*' + _this.handleCode(md5(fp), 'en', '+', 0, 5);
break;
case 'B':
secretCode = _this.handleCode(md5(fp), 'en', '+', 0, 5) + '#' + fp + '*' + _this.handleCode(sha256(fp), 'int', '-', 0, 5);
break;
case 'C':
secretCode = _this.handleCode(sha256(fp), 'en', '-', 0, 7) + '-' + _this.handleCode(md5(fp), 'int', '+', 0, 4) + fp;
break;
case 'D':
secretCode = fp + '+' + _this.handleCode(md5(fp), 'en', '-', 0, 4) + _this.handleCode(sha256(fp), 'int', '+', 0, 3);
break;
case 'E':
secretCode = _this.handleCode(fp, 'en', '+', 0, 2) + '%' + _this.handleCode(sha256(fp), 'int', '+', 0, 2) + fp;
break;
case 'F':
secretCode = _this.handleCode(sha256('8f0' + fp + 'b7a'), 'mix', '-', 7, 8) + fp + _this.handleCode(md5('f16s' + fp + 'd'), 'mix', '+', 5, 8);
break;
case 'G':
secretCode = _this.handleCode(sha224('9a1' + fp + 'q1'), 'mix', '+', 10, 9) + _this.handleCode(md5('e5cv' + fp + 'v1'), 'mix', '-', 7, 8) + fp;
break;
case 'H':
secretCode = _this.handleCode(md5('eds' + fp + '874'), 'mix', '-', 4, 7) + fp + _this.handleCode(sha384('t3b' + fp + 'fe4'), 'mix', '+', 6, 8);
break;
case 'I':
secretCode = _this.handleCode(sha224('11a' + fp + 'q1aa'), 'mix', '-', 12, 15) + fp + _this.handleCode(md5('r124' + fp + 'v'), 'mix', '-', 8, 7);
break;
case 'J':
secretCode = fp + _this.handleCode(sha384('e5da' + fp + 'q'), 'mix', '-', 13, 5) + _this.handleCode(sha512('d31' + fp + 'l78'), 'mix', '-', 10, 9);
break;
case 'K':
secretCode = _this.handleCode(md5('p3sa' + fp + 'ps5'), 'mix', '-', 8, 7) + _this.handleCode(sha224('vbne' + fp + '834'), 'mix', '-', 15, 10) + fp;
break;
case 'L':
secretCode = fp + _this.handleCode(sha512('idmn' + fp + '78g'), 'mix', '-', 4, 6) + _this.handleCode(md5('d84' + fp + 'rtd'), 'mix', '-', 12, 5);
break;
case 'M'

文章深入分析了登录POST请求中的加密字段生成过程,揭示了一种基于浏览器信息的高度定制化指纹算法。通过详尽的函数解读,展示了如何利用浏览器组件、x64hash128、MD5、SHA系列哈希函数及自定义处理逻辑来构造指纹密钥。
最低0.47元/天 解锁文章
2114





