Python Challenge: Niveles 7-14

Python Challenge es una página con retos a resolver utilizando Python. Esta es la continuación del post con las soluciones de los niveles 0-6 de este challenge. Puedes encontrar el código de las soluciones en Github.

Nivel 7: Smarty

Este nivel nos muestra una imagen con un extraño patrón de tonos de gris. Al leer la intensidad de gris de cada uno de los cuadrados, obtenemos la siguiente serie:

105 110 116 101 103 114 105 116 121

Si transformamos cada uno de estos números en un caracter ASCII, obtenemos la palabra integrity, clave para el siguiente nivel.

Nivel 8: Working hard?

En el código fuente de este nivel observamos un username y un password que están comprimidos mediante bzip2. Usando la librería bz2 de Python, obtenemos el username (huge) y el password (file). Al hacer click en la imagen, nos pide un usuario y una contraseña, que son los que acabamos de averiguar, y nos lleva al siguiente nivel.

Nivel 9: Connect the dots

De nuevo, al observar el código fuente, encontramos dos cadenas, en este caso dos secuencias de números. Tras analizarlas un poco, descubrimos que los números pares son cercanos entre sí y los impares también, en ambas secuencias. Considerando cada secuencia una lista de pares de números, podemos usar el módulo ImageDraw de la librería PIL, para construir una figura que nos dará la clave del siguiente nivel.

Vaca solución al nivel 9 del Python Challenge

Por cierto, si ponemos cow como solución nos dirá que nos hemos equivocado de sexo, una guía muy acertada para no despistar al jugador que lo ha resuelto.

Nivel 10: What are you looking at?

Nos encontramos una imagen, y al hacer click en ella, una secuencia de números. Como es una secuencia de enteros, podemos hacer una búsqueda en OEIS para ver si es conocida, y efectivamente. Es la secuencia Look and Say, que consiste en describir con números el anterior número.

De esta forma, empezamos en 1. El siguiente elemento es lo que vemos en el anterior, que es un uno (11). A continuación, vemos dos unos (21). A continuación, un dos y un uno (1211). Podríamos seguir el nivel manualmente, pero es mejor programarlo, ya que nos pide la longitud del término 30º de la secuencia, que es 5808 cifras.

Nivel 11: Odd even

Observamos una imagen con un efecto extraño, como esas imágenes de Whatsapp que tienen una miniatura y al abrirlas son otra cosa distinta. Fijándonos un poco más vemos que son dos imágenes intercaladas, y al quedarnos con los píxeles con coordenadas impares obtenemos la clave para el siguiente nivel.

Solución al nivel 11 del Python Challenge

Nivel 12: Dealing evil

De nuevo una imagen con un efecto extraño en sus píxeles. Confieso que me llevé bastante tiempo en este nivel. Tras adquirir cierta experiencia con este tipo de retos, sospeché cuando vi que la imagen del nivel se llamaba evil1.jpg, así que probé a poner evil2.jpg y ¡bingo! la imagen nos explica que debemos cambiar la extensión a gfx.

Como curiosidad, al probar evil3.jpg nos topamos con el texto "no more evils...", y al probar evil4.jpg encontramos una imagen que en realidad es un archivo de texto que dice: "Bert is evil! go back!".

Tras mucha desesperación, decidí abrir la imagen con un editor hexadecimal, y me encontré la clave para solucionar el nivel, la famosa etiqueta ÿOÿà que identifica el inicio de un archivo jpeg.

Imagen del nivel 12 abierta con un editor hexadecimal

La etiqueta aparece de forma discontínua varias veces, al igual que la etiqueta GIF8. Si tomamos uno de cada 5 píxeles y lo convertimos en 5 imágenes, obtendremos la clave para el siguiente nivel: disproportional.

Nivel 13: Call him

Observando el código fuente encontramos un enlace a un servidor XML-RPC. Al hacer listMethods() en él, encontramos un único método definido, phone. Ya que la pista del nivel es "phone that evil", y sabemos que Bert es evil por el nivel anterior, llamamos a Bert, y obtenemos la solución del nivel.

A estas alturas, los niveles se complican hasta un nivel bastante poco intuitivo. Perdí muchas horas porque llamar a bert no daba ningún resultado si la B no era mayúscula.

Nivel 14: Walk around

Este nivel es bastante sencillo en comparación con el anterior: nos encontramos una imagen de una ensaimada (en forma de espiral) y abajo, una imagen que al abrirla sólo tiene 1px de altura.

Al enrollarla en forma de espiral, obtenemos la imagen de un gato. Ponemos cat en la URL, y nos enseña el gato, cuyo nombre es Uzi. Ponemos Uzi en la URL, y llegamos al siguiente nivel.

Puedes encontrar la solución a los siguientes niveles en el post con las soluciones de los niveles 15-17.

Sé el primero en comentar!