Querido Ndugu,
Ahora que ya quedan apenas unos minutos para que se termine el reto, te voy a contar hasta dónde hemos llegado los teclarios en el reto lanzado en la página web http://canyoucrackit.co.uk/. Cuando leas esto no sé que aparecerá en la página, pero ahora mismo lo que yo veo es esto:
con el “time remaining” bajando a un segundo por segundo.
La página me la descubrieron unos alumnos hace algo más de una semana un día de laboratorio en el que ni ellos ni yo teníamos muchas ganas de dedicar tiempo a la práctica de Java que supuestamente tenían que hacer (y yo explicar)…
Así que me puse manos a la obra. Ellos (aspirantes a informáticos, pero también a matemáticos) al ver números ya estaban hablando de hacer un análisis de las apariciones, probabilidades y demás historias. Yo, teclario informático de pro (con afición en las matemáticas, pero nada más) al ver la secuencia de números pensé “estos números son algo en little-endian y tiene la pinta de código máquina”. Así que estuvimos trasteando un rato en el laboratorio; el tiempo dió para poco (además, había que compaginarlo con resolver las dudas a otros alumnos…), pero luego seguí dandole vueltas al asunto. Por motivos que no vienen al caso el año pasado volví a ponerme el gorro de programador de bajo nivel y estuve trasteando con la ingeniería inversa a partir de código máquina, así que dispongo de una licencia del mejor desensamblador que conozco: el IDA Pro.
Con el desensamblador pude entender la mayor parte del código. En realidad no es algo demasiado enrevesado que intente luchar contra la ingeniería inversa: un par de saltos y nop por el medio y un pop esp poco habitual que hace que la rutina no pueda volver. También salta a la vista que la rutina está pensada para ser ejecutada en Linux, porque termina con un int 80h. De todas formas, el resto del código es independiente de Linux o Windows, así que Visual Studio en mano, me puse a ejecutar el código (cargándolo en un Heap creado con derecho de ejecución…), una vez que había comprobado con el IDA que aquello era seguro
Las conclusiones fueron… desconcertantes. El código NO estaba completo. Claramente era una rutina que desencriptaba un mensaje que NO estaba. La rutina esperaba que justo después del último byte publicado:
- Aparecieran cuatro bytes
0x42 0x42 0x42 0x42. - Después cuatro bytes con el tamaño del mensaje a desencriptar.
- Por último, el mensaje cifrado.
La rutina deja el resultado final… como “variable local” en la pila (tras una tabla de descifrado que construye durante la ejecución).
En fin, Ndugu, una pequeña decepción. ¡Después de la intriga me quedaba sin saberlo! Asumí que el texto “The challenge continues” que aparece en la página significaba que cuando terminara la cuenta atrás aparecería el mensaje cifrado… y me olvidé….
… hasta unas pocas horas después, cuando me di cuenta de que si no daban todos los datos… ¿por qué podías meter la contraseña? Mi mente ya no daba más de sí, así que pedí ayuda a Google, y lo que ví me hizo pensar en la famosa canción del “ey, Manolete, si no sabes torear p’a qué te metes”. Resulta que la página… es de los servicios de inteligencia británicos que la han puesto para buscar futuros trabajadores, a modo de prueba. Un artículo en The Telegraph da los detalles.
Querido Ndugu, eso ya se me viene grande. Yo no tengo pretensiones de ser espía, ni cualidades para lograrlo. De haber sabido al principio de qué iba la historia no habría intentado descrifrar ni siquiera el primer paso para el que mi intelecto sí tenía alcance. Ahora ya sé (por las pistas que da el artículo de The Telegraph) que el mensaje a descifrar está escondido entre los metadatos del PNG que contiene el código. Y lo confirmo, está ahí. Pero su descifrado luego te lleva a una segunda fase, y luego a una tercera hasta dar con la clave. Pero yo me planto antes. Me lo pasé bien haciendo la ingeniería inversa, pero no me ví con fuerzas de mucho más.
Yo no quiero ser espía.
P.D.: Tic, tac, tic, tac, … ya sólo quedan 54 minutos…



¡¡SE ACABÓ!!
Y… la página sigue igual. Vaya chasco :’( Esperaba ver algún efecto chulo… los números cayendo tipo matrix… pero no. Está en 0 0 0 y ya…
Yo creo que lo que te ha pasado es que esto te ha pillado en una época donde dedicas mucho tiempo a cambiar pañales, que si no, seguro que buscabas el mensaje en los metadatos y donde hiciese falta.
En fin, has perdido la oportunidad de convertirte un espía al servicio de su Majestad, como James Bond, aunque quizás te lo pueden convalidar en el CNI y te conviertes en un espía al servicio de la Familia Real (menos Urdangarín)
Supongo que ya lo habréis visto, pero en la página pusieron un enlace a una explicación (breve) de la solución y sus distintas fases:
http://canyoucrackit.co.uk/codeexplained.asp?v=1
La verdad es que mola hacer “entrevistas de trabajo” así XD
[...] que me voy por las ramas, y se me acaba el tiempo, como ya me ocurriera con otro post. Hoy, día 30 de Diciembre de 2011, es un día histórico. Porque en Samoa, en el archipiélago de [...]