2012-01-28 13 views
5

Encontré este código en un archivo .js. ¿Qué es este código?Decode este extraño Javascript

He descargado ese archivo en mi servidor web localhost. Mantener este código en el archivo .js me redirecciona a google.com y cuando estoy comentando este código, ¡la página funciona perfectamente!

Entiendo que esto se hace para exigir que la página se ejecute solo desde un enlace de servidor.

¿Cómo puedo decodificar este 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'))() 

Respuesta

16

Python usa la misma forma de codificación, así que simplemente lo tiré en un shell de 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')" 

lo que este código se reduce a (la adición de un espacio en blanco para mayor claridad):

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

Entonces, ¿qué significa esto realmente hacer? Node.js al rescate:

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

Así [] es simplemente una matriz vacía, [].constructor nos da el constructor array (que es un objeto Function), y finalmente, [].constructor.constructor nos da el constructor del objeto Function. Ese constructor acepta una cadena que contiene algún código, y la convierte en una función invocable, que luego se llama (tenga en cuenta el () al final). Por lo que este final sólo se ejecuta este código:

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

Sí, si escribía código de esa manera, me ofuscar también! ;)

+1

+1 Buena explicación :) – fozylet

+0

explicación concisa y clara ... ¡gracias! aceptado !!! – Sandy505

+0

@Thomas ¿cómo puedo codificar el código normal de Javascript para este formato de codificación? – Sandy505

3

Es doblemente codificadas por primera vez como personajes de estilo URL% nn, entonces como \ xnn caracteres de la cadena. Se decodifica a

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

Nota que anidan las cotizaciones ya no adecuadamente después de la decodificación y la ['unescape'] ya está hecho.

5

probar este ...

<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> 

La respuesta, como ya se ha señalado, es ...

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

me encontré con este código al descargar uno de la plantilla de templatemonster. com. Intenté todos y cada uno de los pasos, pero no estaba disponible para ese sitio web en mi servidor local/propio. Entonces pensé que podría ser algo de JS si no flash.

intenté eliminar cada js One after Another y luego descubrí que pegan este código en el último de sus archivos para no permitirle descargar las páginas. :)

para entender el código busqué en Google y encontré este hilo. Artículo Gr8.

feliz ahora! Soy una galleta ahora.:)

El código que pegar es:

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

y en jQuery^version.js

0

yo sugeriría el uso esto la próxima vez URL DECODE Desde aquí se puede decodificar esa cuerda

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

Es una forma de ocultar código y comprobar si el script se ejecuta en un dominio específico. si no, redirigirlo a alguna parte. en este caso google.com

0

Ese archivo js de que está hablando es una pieza de código js que http://templates.entheosweb.com/ utiliza para proteger sus secuencias de comandos y temas web de ser robados de su sitio web. Donde quiera que tenga ese archivo significa que el tema o los archivos con los que se incluyó se lo robaron de ese sitio web.

0

Su suceder una vez que copiar/pegar o guardar archivos como plantilla de template-help.com

Sólo tiene que eliminar esa sección para funcionar perfectamente. Si desciframos el código, su aspecto como este -

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

Así eliminarla n disfrutar.