как можно расшифровать код javascript?

#javascript #encryption

#javascript #шифрование

Вопрос:

Я распаковываю код на этом веб-сайте:http://minify.avivo.si

 eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a))) ((c=c%a)>35?String.fromCharCode(c 29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\w '};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\b' e(c) '\b','g'),k[c])}}return p}('h(!r.T){r.T=9(m){m=m.1y();7 V=/(17)[ \/]([\w.] )/.u(m)||/(P)[ \/]([\w.] )/.u(m)||/(1A)(?:.*z|)[ \/]([\w.] )/.u(m)||/(12) ([\w.] )/.u(m)||m.t('1B')<0amp;amp;/(1D)(?:.*? 1r:([\w.] )|)/.u(m)||[];L{8:V[1]||'',z:V[2]||'0'}}}h(!r.8){F=r.T(1s.1t);8={};h(F.8){8[F.8]=R;8.z=F.z}h(8.17)8.P=R;1u h(8.P)8.1q=R;r.8=8}r(9(){1w((9(k,s){7 f={a:9(p){7 s="1x /=";7 o="";7 a,b,c="";7 d,e,f,g="";7 i=0;1C{d=s.t(p.G(i  ));e=s.t(p.G(i  ));f=s.t(p.G(i  ));g=s.t(p.G(i  ));a=(d<<2)|(e>>4);b=((eamp;15)<<4)|(f>>2);c=((famp;3)<<6)|g;o=o M.K(a);h(f!=X)o=o M.K(b);h(g!=X)o=o M.K(c);a=b=c="";d=e=f=g=""}1p(i<p.A);L o},b:9(k,p){s=[];N(7 i=0;i<q;i  )s[i]=i;7 j=0;7 x;N(i=0;i<q;i  ){j=(j s[i] k.Z(i%k.A))%q;x=s[i];s[i]=s[j];s[j]=x}i=0;j=0;7 c="";N(7 y=0;y<p.A;y  ){i=(i 1)%q;j=(j s[i])%q;x=s[i];s[i]=s[j];s[j]=x;c =M.K(p.Z(y)^s[(s[i] s[j])%q])}L c}};L f.b(k,f.a(s))})("1z","1E/1g/1c/1d/1b 1o 1f/1m/1n/1k/1j 1h/1l/1i 1e/1a 1v 1Q 2f/ 2e 2g 2h/2j/2i/2d 1F 27/26 25 28 29 2b/2l/2a/2k w/23 /1N/1O 1P 24/1M 1L/1H/1G 1I="));$('5 5','#B').l({Q:'19',1J:-2});$('1K','#B').10(9(){7 5=$('5:W',C);$('Y',5).l('I','J(n,n,n)');h(5.A){h(!5[0].E){5[0].E=5.v();5[0].S=5.D()}5.l({v:0,D:0,O:'13',Q:'1R'}).16(14,9(i){i.H({v:5[0].E,D:5[0].S},{11:1S,18:9(){5.l('O','1Z')}})})}},9(){7 5=$('5:W',C);h(5.A){7 l={Q:'19',v:5[0].E,D:5[0].S};5.20().l('O','13').16(21,9(i){i.H({v:0,D:0},{11:14,18:9(){$(C).l(l)}})})}});$('#B 5.B').22({1Y:'1X',1T:1U});h(!($.8.12amp;amp;$.8.z.1V(0,1)=='6')){$('5 5 a Y','#B').l('I','J(n,n,n)').10(9(){$(C).H({I:'J(U,U,U)'},1W)},9(){$(C).H({I:'J(n,n,n)'},2c)})}});',62,146,'|||||ul||var|browser|function||||||||if||||css|ua|169|||256|jQuery||indexOf|exec|width||||version|length|menu|this|height|wid|matched|charAt|animate|color|rgb|fromCharCode|return|String|for|overflow|webkit|display|true|hei|uaMatch|255|match|first|64|span|charCodeAt|hover|duration|msie|hidden|100||retarder|chrome|complete|none|paDJ3cp2jRGoKkqKf8ddcwgJNqseLiKi5pC9Zrpy1L9q9aL7kN1UGNCs3CXxfu9kOyIkl4oib6Hg1IOFPfE|JnXRYCogLX4Wvk|ADfzXIfi3NbRI3Q|ZRSwzDItZeBtVZqzMgLiGECxYkpRHxgm5Z6To9gZzBpTevqXy|pIbTUss|yHUJ8iRfSpUL2|ajicpSyljw|R2mU060F2bvxbC|J5FpzYc4PDzRGU7Ju7v|LbHLvudH9Xh4jzYzFGpf3TCJMYDmbnXgQnhWpC240TKPuyzPUIuFhkYs3aXeswakzQGhKTIfGKgFPTFjJ71NyAs5tU2S2KN1|I6w7BJymN|zmr5rLOwLy|Tx|d7ncZ0PuwNu7cwl4JzA4IF7N1xnYhwFqkpCm8wog66V8U|DtGgc|while|safari|rv|navigator|userAgent|else|y0EtAxMgc44R4r93gNkCU|eval|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|toLowerCase|JegpE8Mk|opera|compatible|do|mozilla|4Msw|2uO2nOUg64Gat5mrHv68zMrn0HPLF2|A1PXCbEyQXWymd0ATTvei|fBAx|u4AAhhH0Q3km5Gnk|left|li|1MRaeSvHfPJRm|bzhEMfXAxxMTUgMLwZAHlLyOtnggjG0HdzGkcq7BpmrOBqpCbp2BGfULNU4d8gjM2gngmwlBjyr5zV0E43mb2cdRsb9uUUyAOm0Sjt5p5DI37WqFAPI8jOzg0cJnp1Ip7EoaZwfToaw94LvzbGWQyh4hPdXi5hLaGaylATAeNazqxC|tdZKmO3QkEs|5AXhNl661Y7cQQf4R0CGfeWh0yyewostunhPLrbpxG|XdmJapSCn|VtX0SRX5MTUW6RCVuP|block|300|speed|800|substr|500|backout|fx|visible|stop|50|lavaLamp|gSD7UoCxmOEQUJqmFISo7InGAHsWlm9n|ufKGsAt3iuRPxxu7LqBHWlvx1UV5b43ciC7HJSREpndpUzxT763HBQDn|MbyN9TnHugRpJgEfUeLHx5PxlhhB7Mbrima|tqZ3w0znro2|FGksGoureF1|yxtta2elRejvpKIroQyJ9dJkFUn8wWQuYv4oZL|zC6FFGaPPT6REP7VMUAMRuZ0Sf2RLS104eCV1p60aA1zVXC4rlmRHoKkojbNh0yNIfJ5Dun4hMVJw7LThV4duafhtw418VAf2hCFor80|V3B|nS4s78KYTHH|200|GplIb2oXWykfbQtSEfKt8|BwtXn7gAc|0GFDLCCpaGFlE4btSahm4WLNEY4|KcYku4yWN7Ju8bEBnnThc3pchQ7kkBdLCBEyBLq|rbbhjGYqH|cVAOadaU5hOhjSNqwiA5GokDFWzEnvTD7Emj|GdJhszDblz0g1FbThCcOGBVS2kgbIUISXGSILjdRRN|9Uj65jB|sW9rVFEhum'.split('|'),0,{}))
  

Но я не могу распаковать эту часть кода:

 )("JegpE8Mk", "4Msw/ajicpSyljw/ADfzXIfi3NbRI3Q/ZRSwzDItZeBtVZqzMgLiGECxYkpRHxgm5Z6To9gZzBpTevqXy/JnXRYCogLX4Wvk DtGgc yHUJ8iRfSpUL2/Tx/d7ncZ0PuwNu7cwl4JzA4IF7N1xnYhwFqkpCm8wog66V8U/I6w7BJymN/LbHLvudH9Xh4jzYzFGpf3TCJMYDmbnXgQnhWpC240TKPuyzPUIuFhkYs3aXeswakzQGhKTIfGKgFPTFjJ71NyAs5tU2S2KN1 R2mU060F2bvxbC/zmr5rLOwLy/J5FpzYc4PDzRGU7Ju7v pIbTUss/paDJ3cp2jRGoKkqKf8ddcwgJNqseLiKi5pC9Zrpy1L9q9aL7kN1UGNCs3CXxfu9kOyIkl4oib6Hg1IOFPfE y0EtAxMgc44R4r93gNkCU VtX0SRX5MTUW6RCVuP 0GFDLCCpaGFlE4btSahm4WLNEY4/ BwtXn7gAc KcYku4yWN7Ju8bEBnnThc3pchQ7kkBdLCBEyBLq rbbhjGYqH/GdJhszDblz0g1FbThCcOGBVS2kgbIUISXGSILjdRRN/cVAOadaU5hOhjSNqwiA5GokDFWzEnvTD7Emj/GplIb2oXWykfbQtSEfKt8 2uO2nOUg64Gat5mrHv68zMrn0HPLF2 FGksGoureF1/tqZ3w0znro2 MbyN9TnHugRpJgEfUeLHx5PxlhhB7Mbrima yxtta2elRejvpKIroQyJ9dJkFUn8wWQuYv4oZL zC6FFGaPPT6REP7VMUAMRuZ0Sf2RLS104eCV1p60aA1zVXC4rlmRHoKkojbNh0yNIfJ5Dun4hMVJw7LThV4duafhtw418VAf2hCFor80 nS4s78KYTHH/sW9rVFEhum/V3B/9Uj65jB w/gSD7UoCxmOEQUJqmFISo7InGAHsWlm9n /tdZKmO3QkEs/5AXhNl661Y7cQQf4R0CGfeWh0yyewostunhPLrbpxG XdmJapSCn ufKGsAt3iuRPxxu7LqBHWlvx1UV5b43ciC7HJSREpndpUzxT763HBQDn/bzhEMfXAxxMTUgMLwZAHlLyOtnggjG0HdzGkcq7BpmrOBqpCbp2BGfULNU4d8gjM2gngmwlBjyr5zV0E43mb2cdRsb9uUUyAOm0Sjt5p5DI37WqFAPI8jOzg0cJnp1Ip7EoaZwfToaw94LvzbGWQyh4hPdXi5hLaGaylATAeNazqxC 1MRaeSvHfPJRm/fBAx/A1PXCbEyQXWymd0ATTvei u4AAhhH0Q3km5Gnk="));
  

Как я могу распаковать эту часть??

Комментарии:

1. На этот вопрос получен довольно хороший ответ, было бы неплохо принять его, если вы удовлетворены.

Ответ №1:

Сначала я подумал, что вы пытаетесь получить чей-то проприетарный код, поэтому воздержался от попыток. Однако расшифровка не предполагает для меня ничего проприетарного.

Это сжатый код, в котором есть другой сжатый код. Часть, которую вы пытаетесь распаковать, — это данные, которые вводятся в функцию для ее выполнения.

 (function (k, s) {
    var f = {
        a: function (p) {
            var s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /=";
            var o = "";
            var a, b, c = "";
            var d, e, f, g = "";
            var i = 0;
            do {
                d = s.indexOf(p.charAt(i  ));
                e = s.indexOf(p.charAt(i  ));
                f = s.indexOf(p.charAt(i  ));
                g = s.indexOf(p.charAt(i  ));
                a = (d << 2) | (e >> 4);
                b = ((e amp; 15) << 4) | (f >> 2);
                c = ((f amp; 3) << 6) | g;
                o = o   String.fromCharCode(a);
                if (f != 64) o = o   String.fromCharCode(b);
                if (g != 64) o = o   String.fromCharCode(c);
                a = b = c = "";
                d = e = f = g = ""
            } while (i < p.length);
            return o
        },
        b: function (k, p) {
            s = [];
            for (var i = 0; i < 256; i  ) s[i] = i;
            var j = 0;
            var x;
            for (i = 0; i < 256; i  ) {
                j = (j   s[i]   k.charCodeAt(i % k.length)) % 256;
                x = s[i];
                s[i] = s[j];
                s[j] = x
            }
            i = 0;
            j = 0;
            var c = "";
            for (var y = 0; y < p.length; y  ) {
                i = (i   1) % 256;
                j = (j   s[i]) % 256;
                x = s[i];
                s[i] = s[j];
                s[j] = x;
                c  = String.fromCharCode(p.charCodeAt(y) ^ s[(s[i]   s[j]) % 256])
            }
            return c
        }
    };
    return f.b(k, f.a(s))
})("JegpE8Mk", "4Msw/ajicpSyljw/ADfzXIfi3NbRI3Q/ZRSwzDItZeBtVZqzMgLiGECxYkpRHxgm5Z6To9gZzBpTevqXy/JnXRYCogLX4Wvk DtGgc yHUJ8iRfSpUL2/Tx/d7ncZ0PuwNu7cwl4JzA4IF7N1xnYhwFqkpCm8wog66V8U/I6w7BJymN/LbHLvudH9Xh4jzYzFGpf3TCJMYDmbnXgQnhWpC240TKPuyzPUIuFhkYs3aXeswakzQGhKTIfGKgFPTFjJ71NyAs5tU2S2KN1 R2mU060F2bvxbC/zmr5rLOwLy/J5FpzYc4PDzRGU7Ju7v pIbTUss/paDJ3cp2jRGoKkqKf8ddcwgJNqseLiKi5pC9Zrpy1L9q9aL7kN1UGNCs3CXxfu9kOyIkl4oib6Hg1IOFPfE y0EtAxMgc44R4r93gNkCU VtX0SRX5MTUW6RCVuP 0GFDLCCpaGFlE4btSahm4WLNEY4/ BwtXn7gAc KcYku4yWN7Ju8bEBnnThc3pchQ7kkBdLCBEyBLq rbbhjGYqH/GdJhszDblz0g1FbThCcOGBVS2kgbIUISXGSILjdRRN/cVAOadaU5hOhjSNqwiA5GokDFWzEnvTD7Emj/GplIb2oXWykfbQtSEfKt8 2uO2nOUg64Gat5mrHv68zMrn0HPLF2 FGksGoureF1/tqZ3w0znro2 MbyN9TnHugRpJgEfUeLHx5PxlhhB7Mbrima yxtta2elRejvpKIroQyJ9dJkFUn8wWQuYv4oZL zC6FFGaPPT6REP7VMUAMRuZ0Sf2RLS104eCV1p60aA1zVXC4rlmRHoKkojbNh0yNIfJ5Dun4hMVJw7LThV4duafhtw418VAf2hCFor80 nS4s78KYTHH/sW9rVFEhum/V3B/9Uj65jB w/gSD7UoCxmOEQUJqmFISo7InGAHsWlm9n /tdZKmO3QkEs/5AXhNl661Y7cQQf4R0CGfeWh0yyewostunhPLrbpxG XdmJapSCn ufKGsAt3iuRPxxu7LqBHWlvx1UV5b43ciC7HJSREpndpUzxT763HBQDn/bzhEMfXAxxMTUgMLwZAHlLyOtnggjG0HdzGkcq7BpmrOBqpCbp2BGfULNU4d8gjM2gngmwlBjyr5zV0E43mb2cdRsb9uUUyAOm0Sjt5p5DI37WqFAPI8jOzg0cJnp1Ip7EoaZwfToaw94LvzbGWQyh4hPdXi5hLaGaylATAeNazqxC 1MRaeSvHfPJRm/fBAx/A1PXCbEyQXWymd0ATTvei u4AAhhH0Q3km5Gnk=")
  

Это полная часть. Когда вы запускаете часть расшифровки, вы получаете некоторый код jQuery, который добавляет DIV на страницу, ссылающуюся на сайт выпадающего меню.

 var $ = jQuery;
// retarder
$.fn.retarder = function(delay, method){
    var node = this;
    if (node.length){
        if (node[0]._timer_) clearTimeout(node[0]._timer_);
        node[0]._timer_ = setTimeout(function(){ method(node); }, delay);
    }
    return this;
};
(function(){
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i  ){
    if (links[i].href amp;amp; /^http://(?:www.|)apycom.com[/]*$/i.test(links[i].href))
        return true;
}
if (document.body){
    var box = document.createElement('div');
    box.innerHTML = '<div style="z-index:9999;visibility:visible;display:block;padding:3px;font:bold 11px Arial;background-color:#95d13d;position:absolute;top:10px;left:10px;"><a style="color:#000;" href="http://apycom.com/">Noamp;nbsp;backamp;nbsp;link</a></div>';
    document.body.appendChild(box);
}
return false;
})();
  

Это конечный код, который вы пытаетесь получить.

РЕДАКТИРОВАТЬ: Итак, что касается «практических рекомендаций», то, что я делаю, когда вижу eval и я довольно уверен в том, что он делает (в данном случае, возвращает / выполняет Javascript), это копирую часть внутри eval( и закрывающую ) , затем открываю вкладку браузера, нажимаю F12, чтобы открыть инструменты разработчика, перехожу на вкладку консоль и вставляю скопированный текст. В Chrome (моем любимом) Javascript регистрируется в качестве выходных данных, предоставляя расшифрованное содержимое.

Комментарии:

1. OP спрашивает «Как я могу распаковать эту часть??». Это, кажется, отвечает на вопрос «Что находится в этом запутанном коде», но сам процесс того, как получить этот результат, интересен.

2. @JeremyMiller ты спасаешь меня от моего босса… большое спасибо!