#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 ты спасаешь меня от моего босса… большое спасибо!