2012-01-28 1 views
5

Я столкнулся с этим кодом в файле .js. Что это за код?Декодирование этого странного Javascript

Я загрузил этот файл на свой локальный веб-сервер. Сохранение этого кода в файле .js перенаправляет меня на google.com, и когда я комментирую этот код, страница работает отлично!

Я могу понять, что это делается для обеспечения того, чтобы страница выполнялась только с сервера!

Как я могу декодировать этот js ???

[]['\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72']['\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72'](self['\x75\x6e\x65\x73\x63\x61\x70\x65']('%69%66%28%7e%6c%6f%63%61%74%69%6f%6e%2e%70%72%6f%74%6f%63%6f%6c%2e%69%6e%64%65%78%4f%66%28%27%68%74%74%70%3a%27%29%26%26%7e%6c%6f%63%61%74%69%6f%6e%2e%68%6f%73%74%2e%69%6e%64%65%78%4f%66%28%27%74%65%6d%70%6c%61%74%65%2d%68%65%6c%70%2e%63%6f%6d%27%29%29%7b%7d%65%6c%73%65%28%6c%6f%63%61%74%69%6f%6e%2e%68%72%65%66%3d%27%68%74%74%70%3a%2f%2f%77%77%77%2e%67%6f%6f%67%6c%65%2e%63%6f%6d%27%29'))() 

ответ

16

Python использует тот же способ кодирования, поэтому я просто бросил его в оболочку Python.

>>> '\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72' 
'constructor' 
>>> '\x75\x6e\x65\x73\x63\x61\x70\x65' 
'unescape' 
>>> import urllib 
>>> urllib.unquote('%69%66%28%7e%6c%6f%63%61%74%69%6f%6e%2e%70%72%6f%74%6f%63%6f%6c%2e%69%6e%64%65%78%4f%66%28%27%68%74%74%70%3a%27%29%26%26%7e%6c%6f%63%61%74%69%6f%6e%2e%68%6f%73%74%2e%69%6e%64%65%78%4f%66%28%27%74%65%6d%70%6c%61%74%65%2d%68%65%6c%70%2e%63%6f%6d%27%29%29%7b%7d%65%6c%73%65%28%6c%6f%63%61%74%69%6f%6e%2e%68%72%65%66%3d%27%68%74%74%70%3a%2f%2f%77%77%77%2e%67%6f%6f%67%6c%65%2e%63%6f%6d%27%29') 
"if(~location.protocol.indexOf('http:')&&~location.host.indexOf('template-help.com')){}else(location.href='http://www.google.com')" 

Так что этот код сводится к (добавление пробелов для ясности):

[]['constructor']['constructor'](
    "if (~location.protocol.indexOf('http:') && 
     ~location.host.indexOf('template-help.com')) 
    {} 
    else 
    (location.href='http://www.google.com')")() 

Итак, что же это на самом деле сделать? Node.js на помощь:

> [].constructor 
[Function: Array] 
> [].constructor.constructor 
[Function: Function] 
> 

Так [] просто пустой массив, [].constructor дает конструктор массива (который является Function объектом), и, наконец, [].constructor.constructor дает конструктор Function объекта. Этот конструктор принимает строку, содержащую некоторый код, и превращает ее в вызываемую функцию, которая затем вызывается (обратите внимание на () в самом конце). Так что это в конечном итоге просто выполняет этот код:

if (~location.protocol.indexOf('http:') && 
    ~location.host.indexOf('template-help.com')) 
    {} 
else 
    (location.href='http://www.google.com') 

Да, если бы я написал код, как это, я бы запутать его тоже! ;)

+1

+1 Хорошее объяснение :) – fozylet

+0

краткое и четкое объяснение ... спасибо! принято !!! – Sandy505

+0

@Thomas Как я могу закодировать нормальный код javascript для этого формата кодировки ?? – Sandy505

3

Он дважды кодируется, сначала как% nn символов в стиле URL, а затем в виде символов \ xnn. Он декодирует в

[]['constructor']['constructor'](
    self['unescape'](' 
    if(~location.protocol.indexOf('http:')&&~location.host.indexOf('template-help.com')){} 
    else(location.href='http://www.google.com') 
    '))() 

Обратите внимание, что больше не кавычки гнезда должным образом после декодирования, и ['unescape'] уже сделано.

5

Попробуйте это ...

<html> 
<head> 
<script type="text/javascript"> 
var a="[]['\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72']['\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72'](self['\x75\x6e\x65\x73\x63\x61\x70\x65'](" + unescape('%69%66%28%7e%6c%6f%63%61%74%69%6f%6e%2e%70%72%6f%74%6f%63%6f%6c%2e%69%6e%64%65%78%4f%66%28%27%68%74%74%70%3a%27%29%26%26%7e%6c%6f%63%61%74%69%6f%6e%2e%68%6f%73%74%2e%69%6e%64%65%78%4f%66%28%27%74%65%6d%70%6c%61%74%65%2d%68%65%6c%70%2e%63%6f%6d%27%29%29%7b%7d%65%6c%73%65%28%6c%6f%63%61%74%69%6f%6e%2e%68%72%65%66%3d%27%68%74%74%70%3a%2f%2f%77%77%77%2e%67%6f%6f%67%6c%65%2e%63%6f%6d%27%29') + "))()"; 
</script> 
</head> 
<body> 
<input type=button value=click onclick="javascript:alert(a);"> 
</body> 
</html> 

Ответ, как уже отмечалось, является ...

[]['constructor']['constructor'](self['unescape'](if(~location.protocol.indexOf('http:')&&~location.host.indexOf('template-help.com')){}else(location.href='http://www.google.com')))() 
0

я нашел этот код при загрузке одного шаблона от TemplateMonster. ком. Я пробовал каждый шаг, но я не сделал этот сайт availbale на моем локальном/собственном сервере. Тогда я подумал, что это может быть какая-то JS, если не вспышка.

пытался удалить каждый js One after Another, а затем обнаружил, что они вставляют этот код в последний файл, чтобы вы не загружали страницы. :)

Чтобы понять код, я искал Google и нашел эту тему. Статья Gr8.

счастливо сейчас! Теперь я взломщик.:)

Код они паста:

[] [ '\ x63 \ x6f \ x6e \ x73 \ x74 \ x72 \ x75 \ x63 \ x74 \ x6f \ x72'] '\ x63 \ x6f \ x6e \ x73 \ x74 \ x72 \ x75 \ x63 \ x74 \ x6f \ x72'()

и в JQuery^version.js

0

Я хотел бы предложить использовать данную следующий раз URL DECODE Вы можете легко декодировать эта строка.

if(~location.protocol.indexOf('http:')&&~location.host.indexOf('template-help.com')){}else(location.href='http://www.google.com') 

Это способ скрыть код и проверить, работает ли скрипт в определенном домене. если не перенаправить его где-нибудь. в этом случае google.com

0

Этот js-файл, о котором вы говорите, является куском кода js, который используется для защиты его веб-скриптов и тем от их украденного веб-сайта. Где бы вы ни находились, этот файл означает, что тема или файлы, в которые он был включен, были украдены с этого веб-сайта.

0

Его Случаются раз копировать/вставить или сохранить в виде файлов шаблонов из template-help.com

просто удалить этот раздел для запуска отлично. Если мы декодируем код, он выглядит следующим образом:

[]['constructor']['constructor'](
    "if (~location.protocol.indexOf('http:') && 
     ~location.host.indexOf('template-help.com')) 
    {} 
    else 
    (location.href='http://www.google.com')")() 

Так что удаляйте его n наслаждайтесь.