sábado, mayo 10, 2008

Solucionario Reto Hacking VII (II de II)
por Dani Kachakil

Fase 2: El mal sueño

Habiendo superado la primera fase, accedemos a la segunda desde la opción Diviértete. Nos encontramos con una pequeña foto de un girasol, dos campos de texto (primera y segunda clave) y con esta frase de Karl Weierstrass como pista:

"Un matemático que no es también algo de poeta nunca sera un matemático completo"

Nada parece indicar el camino a seguir para superar esta fase, por lo que en principio podríamos suponer que se trata de esteganografía. Parece lógico que exista algún texto oculto en la imagen que indique lo que hay que rellenar en ambos campos, así que como primer paso nos descargaremos la imagen del girasol (nivel2_girasol.jpg) para ver lo que escondía.

Como no quiero aburrir con las mil pruebas inútiles que podríamos hacerle a la imagen (que contenía varias miniaturas y otros textos que despistaban mucho), pasaremos directamente a la solución, que tampoco era nada trivial a mi parecer.

Bastaba con acceder a los comentarios Exif de la imagen (que en principio son legibles desde el propio sistema operativo), para poder leer un conjunto de pistas que se supone que deberían llevarnos a deducir que teníamos que adivinar el nombre de un personaje y que se trataba de Fibonacci, quien murió en el año 1250 DC, es decir, el mismo año que Federico II, nieto de Federico I "Barbarroja", el mismo que aparecía en el campo del fabricante de la cámara (que son las pistas que aparecían).

A partir de ahí, teníamos que adivinar que "Fibonacci" era la palabra que se correspondía con la primera clave. Hecho esto, teníamos que aplicar la sucesión de Fibonacci a la frase que aparecía como pista en la página (el propio girasol también debería habernos llevado a pensar en esta sucesión, ya que sus semillas se ordenan según esa sucesión). Numerando los caracteres de la frase como si de un vector con base cero se tratara y tomando los índices correspondientes a la sucesión de Fibonacci, también empezando en cero (0, 1, 1, 2, 3, 5, 8,…), obteníamos la segunda clave, que como se puede ver, el resultado no esconde ninguna palabra o frase y no tiene ningún sentido, pero esto es lo que obteníamos: "Unn mta ega". Y con eso, ¡reto superado!.

Agradecimientos y comentarios

Hay que reconocer que la primera fase tenía un toque de originalidad y que su resolución era muy factible, ya que gracias a que obteníamos una retroalimentación, podía resolverse paso a paso. En mi caso esa fase me motivó bastante, ya que era la primera vez que aplicaba una inyección SQL en Oracle y eso me obligó a tener que leer todo tipo de documentación y a aprender las peculiaridades de este gestor de bases de datos, ya que a pesar de que la base es la misma, todos ellos tienen sus diferencias.

Sobre la segunda fase, la verdad es que me ha parecido la más chapucera de todos los retos, ya que tenía una complejidad excesiva, era demasiado rebuscada y su resolución no tenía mucha lógica, ni tampoco había ninguna ayuda que indicara si el camino era el correcto o no. Considero que la primera clave sobraba y así su resolución sería mucho más factible. Pero ahí no acabó la cosa, ya que lo peor era que esta fase estaba mal programada por un pequeño detalle. Sí, se trataba de una simple comparación entre dos cadenas de texto, porque no tenía más, pero una mayúscula donde no tocaba hacía que la fase fuera imposible de superar, lo cual demuestra que la programación del reto se terminó de forma precipitada y se publicó sin haberlo probado. Una vez arreglado ese fallo el reto ya se podía superar, pero en el momento de superarlo nuestro usuario desaparecía por completo de la lista debido a otro fallo…

En fin, dejando esos pequeños incidentes de lado (aunque tampoco es la primera vez que digo que las cosas hay que probarlas por el bien de todos), hay que reconocer el esfuerzo y la dedicación que requiere la programación de un reto de estas características, así que ante todo hay que agradecer el trabajo a los de siempre: Chema, Rodol, Alex y a todo aquél que haya participado de cualquier forma, ya que gracias a todos vosotros hemos tenido una nueva oportunidad de aprender jugando, que al final es la utilidad de estos retos. Después de leer esto, ¿te animas a participar en el siguiente?

Saludos,
Daniel Kachakil

1 comentario: