Greasy Fork

Greasy Fork is available in English.

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

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

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');
    }