RSS Feed

Del ofuscador al konami code

2

junio 18, 2012 by - @MatiasArriola

Cuenta la historia que durante una juntada de fernetjs, estaba tratando de probar nice.js.
Nice.js supuestamente ofusca el código javascript, y lo transforma a ascii art en base a una imagen. Me pareció divertido, y lo quise probar. Más allá de que fui cuidadoso eligiendo la imagen y le dediqué varios minutos, a la hora de elegir el script no quise perder el tiempo, entonces fuí al azar a un tab que tenía abierto, abrí las developer tools de chrome, agarré un script, y lo copié todo. El tab era jquery.com, y me quedé sorprendido cuando ví el siguiente comentario:

// Hehe.

Seguido a eso, el siguiente código (el archivo es custom.js):

if ( window.addEventListener ) {
        var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
        window.addEventListener("keydown", function(e){
                kkeys.push( e.keyCode );
                if ( kkeys.toString().indexOf( konami ) >= 0 )
                        window.location = "http://ejohn.org/apps/hero/";
        }, true);
}

Qué fue lo que hice? Probar la combinación de teclas de esos códigos :38, etc. (arriba, arriba, abajo, abajo, izquierda, derecha, izquierda, derecha, b, a).

Muy buena onda! Por un momento pensé que había descubierto un huevo de pascua en el sitio oficial de jQuery, hasta que lo guglié, y me dí cuenta que Paul Irish ya había hablado de eso 3 años atrás.

Pero bueno, fué muy satisfactorio haber encontrado eso, y el haber tenido la oportunidad de jugar a ese “guitar hero”. La ivestigación continuó.

Konami codes

jQuery no fué ni el último ni el primer sitio en implementar ese “truquito”, más bien conocido como konami code. Un poco de contexto e historia pueden ser encontrados en la wikipedia.
Hay una página que lista sitios implementando konami codes, e inclusive existen bastantes utilidades, plugins de jQuery, y demás.

Konami-js soporta gestures para dispositivos móviles, e incluso existe un plugin de wordpress basado en el mismo.

Gente se preguntará: Qué utilidad tienen estos proyectos? NINGUNA!!!
Muchas veces, solo el hecho de hacer de algo divertido, y de divertirse mientras se lo desarrolla y aprender, justifica los medios.

PD: Cuidado con dónde ejecutan la combinación de teclas ;) .