Greasy Fork

MyFreeMP3核心函数encode字段加密函数解密(未完成)

对使用jsjiami.com进行加密的main.js中的encode函数进行解密

目前为 2021-01-08 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/419876/888807/MyFreeMP3%E6%A0%B8%E5%BF%83%E5%87%BD%E6%95%B0encode%E5%AD%97%E6%AE%B5%E5%8A%A0%E5%AF%86%E5%87%BD%E6%95%B0%E8%A7%A3%E5%AF%86%EF%BC%88%E6%9C%AA%E5%AE%8C%E6%88%90%EF%BC%89.js

const md5Script = document.createElement('script');
md5Script.src = 'https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.js';
document.head.appendChild(md5Script);

function encode(_0xa6f0d) {
        var Var_01 = 4;
        var Var_02 = '';
        var Var_03 = ['<Z8BtBRG', '6OwhXG5s', 'XbQdkVw,', 'LjH~z?*k', '~lK%Ly.^', '2Z)Ejr9:', 'YS4=|H?%', '4[mQO/-Z'];
        for (var Var_04 = 0; (Var_04 < Var_03['length']); Var_04++) {
            var Var_05 = Var_03[Var_04]['split']('');
            Var_02 += Var_05['shift']();
            Var_02 += Var_05['pop']();
        }
        var Var_06 = md5(Var_02);
        var Var_07 = md5(Var_06['substr'](0,0x10));
        var Var_08 = md5(Var_06['substr'](16,0x20));
        var Var_09 = md5(new Date()['getTime']())['substr'](-Var_01);
        var Var_10 = (Var_07 + md5((Var_07 + Var_09)));
        var Var_11 = Var_10['length'];
        var Var_12 = ((((new Date()['getTime']() / 1000 + 86400) >> 0) + md5((_0xa6f0d + Var_08))['substr'](0,0x10)) + _0xa6f0d);
        var Var_13 = '';
        for (var Var_14 = 0, Var_15 = Var_12['length']; (Var_14 < Var_15); Var_14++) {
            {
                var Var_16 = Var_12['charCodeAt'](Var_14);
                if ((Var_16 < 128)) {
                    {
                        Var_13 += String['fromCharCode'](Var_16);
                    }
                } else if ((Var_16 > 127) && (Var_16 < 2048)) {
                    Var_13 += String['fromCharCode'](((Var_16 >> 6) | 192));
                    Var_13 += String['fromCharCode'](((Var_16 & 63) | 128));
                } else {
                    Var_13 += String['fromCharCode'](((Var_16 >> 12) | 224));
                    Var_13 += String['fromCharCode']((((Var_16 >> 6) & 63) | 128));
                    Var_13 += String['fromCharCode'](((Var_16 & 63) | 128));
                }
            }
        }
        var Var_17 = Var_13['length'];
        var Var_18 = [];
        for (var Var_04 = 0; (Var_04 <= 255); Var_04++) {
            {
                Var_18[Var_04] = Var_10[(Var_04 % Var_11)]['charCodeAt']();
            }
        }
        var Var_19 = [];
        for (var Var_04 = 0; (Var_04 < 256); Var_04++) {
            {
                Var_19['push'](Var_04);
            }
        }
        for (var Var_20 = 0, Var_04 = 0; (Var_04 < 256); Var_04++) {
            {
                Var_20 = (((Var_20 + Var_19[Var_04]) + Var_18[Var_04]) % 256);
                var Var_21 = Var_19[Var_04];
                Var_19[Var_04] = Var_19[Var_20];
                Var_19[Var_20] = Var_21;
            }
        }
        var Var_22 = '';
        for (var Var_23 = 0, Var_20 = 0, Var_04 = 0; (Var_04 < Var_17); Var_04++) {
            var Var_24 = '0|2|4|3|5|1'['split']('|'),
                Var_25 = 0;
            while (true) {
                switch (Var_24[Var_25++]) {
                case '0':
                    Var_23 = ((Var_23 + 1) % 256);
                    continue;
                case '1':
                    Var_22 += String['fromCharCode'](Var_13[Var_04]['charCodeAt']() ^ Var_19[((Var_19[Var_23] + Var_19[Var_20]) % 256)]);
                    continue;
                case '2':
                    Var_20 = ((Var_20 + Var_19[Var_23]) % 256);
                    continue;
                case '3':
                    Var_19[Var_23] = Var_19[Var_20];
                    continue;
                case '4':
                    var Var_21 = Var_19[Var_23];
                    continue;
                case '5':
                    Var_19[Var_20] = Var_21;
                    continue;
                }
                break;
            }
        }
        var Var_26 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
        for (var Var_27, Var_28, Var_29 = 0, Var_30 = Var_26, Var_31 = ''; Var_22['charAt']((Var_29 | 0)) || (Var_30 = '=', (Var_29 % 1)); Var_31 += Var_30['charAt']((63 & (Var_27 >> (8 - ((Var_29 % 1) * 8)))))) {
            Var_28 = Var_22['charCodeAt'](Var_29 += 0.75);
            Var_27 = ((Var_27 << 8) | Var_28);
        }
        Var_22 = (Var_09 + Var_31['replace'](/=/g,''))['replace'](/\+/g, '-')['replace'](/\//g, '_')['replace'](/=/g, '.');
        return (('data=' + Var_22) + '&v=2');
    }