Hack-It 2010: Nivel 5

Retomando un poquito los hackits de hace algunos años me he topado a la tarde con uno que tenía a medias desde hacía bastante tiempo … este hackit de 2010:

Captura de pantalla 2017-11-13 a las 19.32.44

El señor marcan nos da una imagen en .png en el enlace:

amberpixels.png

Estos suelen ser los hackits/solveits que más me gustan. Este sin embargo me trajo un poco de cabeza durante bastante tiempo …. Y como siempre no era excesivamente dificil …. (sabiendo la clave para resolverlo, cualquiera es facil realmente…)

Empezamos por fijarnos en que en la imagen a simple vista hay pixels de 2 tonos de amarillo/ámbar; sin embargo, si miramos más detenidamente algunas zonas, podremos distinguir un tono de ámbar más pálido:

Captura de pantalla 2017-11-13 a las 19.38.44.png

Partiendo de ese dato, vamos a diferenciar los píxeles de ese color del resto de ellos con este código hecho en Matlab/Octave:

Captura de pantalla 2017-11-13 a las 19.43.40.png

Captura de pantalla 2017-11-13 a las 19.43.01.png

Parandonos a pensar un poco en la imagen, podemos ver que hay algo que destaca claramente en el centro mientras que hay algo de código que aparentemente parece seguir un patrón, por los alrededores del centro …

El siguiente paso que se me ocurrió fue desplazar las líneas horizontales para ver si se podía leer algo de esta forma…

Matlab y Octave tienen una funcion molona que rota arrays el número de rotaciones que se le indiquen: ‘circshift’.

La siguiente pregunta era…. vale… ¿y cuánto rotamos las lineas? Para responder a eso se me ocurrió fijarme en los puntos de la zona central que “parecía” que se repetían:

Captura de pantalla 2017-11-13 a las 19.49.24

Captura de pantalla 2017-11-13 a las 19.49.12

Como vemos, la diferencia es 213-110 = 103. Lo que haremos es, no solo hacer un offset de 103 en esa linea, ya que no dejaría nada claro. Tiene toda la pinta de tener el offset de linea en linea así que a cada linea le añadiremos un offset de 103; es decir, la primera 0, la segunda 103, la tercera 206, la cuarta 309, etc, etc…. Si hacemos eso con todos los pixels (del canal R (o sea, color rojo de la imagen RGB) unicamente en este caso) obtendríamos la siguiente imagen :

Captura de pantalla 2017-11-13 a las 21.22.05.png

El código con el comando ‘circshift’ que he comentado y que produce la imagen anterior es el siguiente:

Captura de pantalla 2017-11-13 a las 21.24.45.png

Qué curioso …. podemos leer casi claramente algo aqui:

Captura de pantalla 2017-11-13 a las 21.26.38.png

Si; dice “Buen trabajo ;)” no obstante…. parece como que la parte superior e inferior del texto no es correcta del todo… ¿por qué? ¿qué es lo que podría estar fallando para que se vea todavía algo mal?

Si nos fijamos un poco, vemos que en la ‘B’ de “Buen” falta la “capota” de arriba (la parte de arriba de la B y que la cierra) y vemos que ésta está más a la derecha en esa misma línea¿?¿?

Captura de pantalla 2017-11-13 a las 21.31.07.png

Además podemos ver cómo los pixels la parte de arriba de la ‘t’ y la ‘b’ (de la palabra “trabajo”) también están más a la derecha en esa misma línea…. ¿Y cómo es esto posible? ……. Pues la respuesta es bien simple: esto significa sencillamente que en una misma linea de la imagen orignal que nos da marcan hay más de una línea de la solución que tenemos que encontrar.

Hay que fijarse que en la imagen original (sin offsetear las líneas con el código de matlab de ‘circshift’ de antes), que podemos ver más arriba (en la imagen en blanco y negro), podemos apreciar que la “capota” de la ‘B’ originalmente está antes que el comienzo de los dos “palitos” que continúan formando la ‘B’ hacia abajo.

De estas observaciones podemos sacar una conclusión: hay que partir las línas cada x para ir formando la imagen final…. Es decir, hay que ir leyendo la imagen linea a linea de izquierda a derecha como si fuera texto y haciendo “intro” cada cierto tiempo

Y ahora la gran pregunta…. ¿cada cuánto hay que hacer “intro”? Imagino que pensando un poco podría sacarse alguna conclusión con los datos que ya tenemos pero… eh, que tenemos un ordenador para sacar todas las posiblidades!!!

Vamos a ello:

Escribiendo el siguiente código:

Captura de pantalla 2017-11-13 a las 22.03.03.png

Conseguimos ejecutar lo siguiente y podemos más o menos, estimar qué valor es el que nos deja una solución legible:

Como podemos ver…. la búsqueda la podemos acotar entre 400 y 450 así que yendo esta vez más despacio descubrimos que el valor “mágico” es … 408:

Captura de pantalla 2017-11-13 a las 22.06.13

Listo! tenemos el texto bien puesto en su sitio!! Vamos a resaltar lo que está en color pálido (como hemos hecho al principio) y…

Captura de pantalla 2017-11-13 a las 22.07.39.png

Aquí podemos ver el código finalmente! ….

1337r0mh4x

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s