JavaScript逆向:金某xx网站登陆指纹算法分析

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

声明:案例分析仅供学习交流使用,勿用于任何非法用途。如学习者进一步逆向并对版权方造成损失,请自行承担法律后果,本人概不负责。

首先查看登录时的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'
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值