Solucionarios: TT0 – Lets Fuck Your Brain

Este reto es uno de los mas divertidos para mi. Aquí la resolución del problema es directa sin mayor problema, pero me ha llevado a conocer un nuevo lenguaje de programación y al concepto de “lenguaje de programación esotérico”. Después de este reto la cantidad de información que desconozco se volvió gigantesco, pues existen cientos de formas de resolver un problema y solo conocemos las mas triviales. Pensar fuera de la caja muchas veces nos hace llegar a lenguajes como este.Como es costumbre en estos juegos, el objetivo es conseguir la clave secreta. Al iniciar el reto observamos lo siguiente:

Firefox Developer Edition_001

Después de pensar mucho tiempo que estaban tratando de darme a entender hice lo que toda persona inteligente haría estos días: Usar Google. Una búsqueda rápida de los términos script, fuck y brain me llevo a la pagina de Wikipedia del lenguaje BrainFuck.script fuck brain - Buscar con Google - Firefox Developer Edition_002

Resulta ser que BrainFuck es un lenguaje Turing-Completo diseñado para asombrar a otros programadores. Este lenguaje maneja de forma directa secciones de memoria y tan solo tiene 8 instrucciones.Brainfuck - Wikipedia, the free encyclopedia - Firefox Developer Edition_003

A partir de aquí el trabajo consistió en transcribir el texto de la pagina a un interprete de BrainFuck. Encontré uno en https://fatiherikli.github.io/brainfuck-visualizer/ que muestra paso a paso el proceso realizado por el programa. Sugiero que lo observen corren con un tiempo de delay que les permita observar el funcionamiento del mismo. Si entienden lo que hace en la memoria, entienden como funciona el programa y probablemente lo encuentren igual de entretenido que yo.Brainfuck Visualizer - Firefox Developer Edition_004

En la captura de pantalla no se observa el mensaje oculto, así que sera una sorpresa para ustedes. En esto momento debo pregunta: Cual fue la lección del día de hoy? Que la computación es un universo gigantes con cosas que no podemos ni imaginar. Un hacker verdadero tiene la curiosidad para adentrarse en este mundo y entender que existen cosas mas allá de los  ataques que se asocian con la comunidad hacker. Otra parte importante es que la respuesta muchas veces se encuentra en Google, solo debemos aprender a preguntarle lo que necesitamos. Por eso este reto es tan bonito para mi, porque muestra cosas que nada tienen que ver con ataques pero en definitiva tienen mucho que enseñarle a las personas que ven la tecnología y computacion como algo pasional.

 

P.D. : El código comentado lo escribo abajo. Ejecutándolo en el interprete y leyendo los comentarios serán capaces de aprender un nuevo de lenguaje de programación en 10 minutos.

++++         Inicializamos el contador a 4
[            Entramos en el primer loop
>+++++       La segunda celda tendra el valor 4 x 5 = 20
<-           Reducimos el contador
]            Salimos del loop
>+++         El segundo contador ahora es 23
[            Iniciamos un loop
>+++         La tercer celda es 23 x 3 = 69
<- 
]            Salimos del loop
>++.         La tercer celda es 69 mas 2 = 71 y se imprime (G)
>++++++      Inicializamos la 4 celda con 6
[
>++++
<-
]            Este loop hace que la 5 celda sea 6 x 4 = 24 
>++++        Aumentamos el valor en 4 (28)
[            Loop en la 6 celda 28 x 4 = 112
>++++
<-
]
>-..         112 menos 1 = 111 (o) y se imprime dos veces
-----------. 111 menos 11 = 100 (d) y se imprime
>.           (Fuck You) Imprimimos nada
<+++++++++++++++++++.  100 mas 19 = 119 (w)
>+++++++++   Otro contador en 9
[
>++++++      Loop 9 x 6 = 54
<-
]
>------.     54 menos 6 = 48 (0)
++           Contador en 50
[
>++          Loop para 50 x 2 = 100
<-
]
>+++++++++++ 100 mas 11
+++.         111 mas 3 = 114 (r) e imprimimos
-------.     114 menos 7 = 107 (k) e imprimimos
>++++++      Contador en 6
[
>+++++       Loop para 6 x 5 = 30
<-
]
>+++.        30 mas 3 = 33 (!) e imprime

Anuncios

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 )

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 )

Google+ photo

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

Conectando a %s