online ofuscar obfuscator node herokuapp desofuscar deobfuscate javascript obfuscation

ofuscar - ¿Cómo puedo decir "amor" sin caracteres o dígitos en JavaScript?



obfuscator io (4)

Bueno, al menos en Firefox, los objetos nativos de JavaScript devuelven la function Object() { [native code] } , que tiene ''v''. Entonces, si tenemos window y Object , entonces supongo que podríamos hacer:

(window["Object"]+0)[29];

Inspirado por el PPT de BlackHat DC 2011 de Ryan Barnett, especialmente el siguiente código:

($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+ ($$=($_=!''''+$)[_/_]+$_[+$])])()[__[_/_]+__ [_+~$]+$_[_]+$$](_/_)

Ayer fue un día especial para los enamorados, así que intenté escribir algo similar. Que básicamente alerta "te quiero" sin ningún carácter o dígitos.

por ejemplo, se puede obtener "I" de ((_=-~[])/--_+[])[_]

tenemos "[objeto objeto]", "verdadero", "falso", "NaN", "Infinito" para usar, no puedo encontrar una manera de obtener "v" de esta manera.

Traté de pensar en String.fromCharCode() , (Ryan ya obtuvo window referencia de window para nosotros, así que en teoría, podemos window["String"]["fromCharCode"](118) ), pero echo de menos "S" y "C "personaje aquí. También piense en la window["eval"](...) , otra vez, no tengo "v".

Solo trate de explicar un poco, [] está vacío, cuando se aplica +/-/~ opérelo, se convierte al número 0 , y ~[] da 1 , 1/0 da Infinitey . Luego se trata de 1/0 + [] , ambos se convertirán en una cadena para el complemento, que proporciona "Infinity" , y "Infinity"[_] == "Infinity"[0] == "I" ...

El código original de Ryan es más complejo, utiliza mucho más, incluye alcance, valor de retorno especial, etc. (esta es otra historia)

Puede que esto parezca no ser una gran idea para hacer las cosas, pero es muy interesante.

Con la ayuda de meze, pude producir esto para Firefox:

($=($=[$=[]][(__=!$+$)[_=-~-~-~$]+(_$={}+$)[_/_]+ ($$=($_=!''''+$)[_/_]+$_[+$])])())[__[_/_]+__ [_+~$]+$_[_]+$$]((_$_=(__$=-~[])/--__$+[])[__$]+_$[_+++_]+__[__$=-~-~[]]+_$[-~[]]+($[_$[$__=_+_]+_$[++$__]+_$[++$__]+_$[++$__]+_$[++$__]+_$[++$__]]+[])[ $__+$__+--_]+__[++_]+_$[$__=_+--_]+_$_[_+++_]+_$[_/_]+$_[__$]);

Básicamente está alert("I love you") , muchas gracias! Si tan solo recibiera la ayuda de ayer, que no he publicado todavía :(

JavaScript es hermoso, algunas variantes para su referencia:

$_ = "true" __ = "false" _$ = "[object Object]" $$ = "rt" _$_ = "Infinity" _ = 3 = 4 = 3 = 4 = 3 $ = window $__ = 8 = 13 __$ = 0 = 2

Algunas variables se reutilizan muchas veces, no intentarán dejar detalles, no es un trabajo divertido :) Estoy feliz, ¡finalmente estamos aquí! Esto en realidad tiene mucho potencial, ya que ahora tenemos "v", y muchos dígitos, en teoría será posible eval() montón de ... cosas más fáciles. Se lo mostraré a mi esposa, espero que disfrute el _ $ - + () ...

Ejemplo como referencia: http://jsfiddle.net/Y4wqw/

por cierto, podemos acortar un poco el código, ya que ya tenemos una referencia a sort() , que puede usarse en lugar de la ventana ["Objeto"] para obtener el "código nativo" => "v", aquí está:

($=($_$=($=[$=[]][(__=!$+$)[_=-~-~-~$]+(_$={}+$)[_/_]+ ($$=($_=!''''+$)[_/_]+$_[+$])]))())[__[_/_]+__ [_+~$]+$_[_]+$$]((_$_=(__$=-~[])/--__$+[])[__$]+_$[_+++_]+__[__$=-~-~[]]+_$[-~[]]+($_$+[])[(__$<<__$<<__$)-_+~[]]+$_[--_]+_$[$__=_+++_]+_$_[_+--_]+_$[_/_]+$_[__$]);

De nuevo, funciona solo en Firefox, puede que no intente migrar a otro navegador. Y me encanta Firefox.


Mismo mensaje, pero diferente ortografía.

// "I <3 u" _= +~[]; // 1 __= -[]; // 0 ___= +(-~[] -~[] -~[]); // 3 $='''' +(''''+(_/__))[__] // i +'' '' // space +''<''+___ // <3 +'' '' // space +(''''+(_<__))[+(-~[] -~[])]; // u alert($);

enlace jsfiddle


prueba este código:

$=(Å='''',[Ç=!(µ=!Å+Å)+{}][Ç[È=++Å-~Å]+Ç[È+È]+µ[Å]+µ[Å-Å]])(); _=$[Ç[È+È+Å]+µ[Å-Å]+Ç[È+È]+Ç[Å]]("¾"); console.info( _[+[]] ); // concole is used just to show result ;)

si lo ejecutas, en la consola obtendrás "v" :), puedes encontrar más información al respecto there

hay una forma de evitar "¾", pero el resultado será "V" (en realidad no es malo para una palabra como amor :):

$=(Å='''',[Ç=!(µ=!Å+Å)+{}][Ç[È=++Å-~Å]+Ç[È+È]+µ[Å]+µ[Å-Å]])(); // we get window object _=$[Ç[È+È+Å]+µ[Å-Å]+Ç[È+È]+Ç[Å]]( $ ); // we use btoa function with argument "[object Window]", // and it returns "W29iamVjdCBXaW5kb3dd" - as you see there is V $$=-~!''''; // 2 $$$=-~$$; // 3 console.info( _[$$*$$$] ); // "V";

btoa crea datos codificados de la cadena dada, utilizando la codificación base-64. Realmente jugando con esa función y cambiando argumentos puedes obtener diferentes personajes :)


alert("/u2665"); // results in ♥