Ir al contenido principal

Miscelánea (IV): Solución Reto 41

Solución al último reto de la categoría "Miscelánea" que he puesto en este blog.

El enunciado del reto decía lo siguiente: Lo importante es el código. Si lo sabes introdúcelo por el teclado y el secreto se visualizará en el LCD (del inglés, 'Liquid Crystal Display').

Y como recurso asociado al reto se proporcionaba el siguiente: arduino.jpg.

Solución: Lo primero que hago es bajar el archivo de imagen, en la que se ve un circuito implementado sobre una placa Arduino Uno y que consta de varios dispositivos: teclado de cuatro columnas y cuatro filas (4x4 'Keypad'), display de cristal líquido de 16 columnas y 2 filas (16x2 LCD), potenciómetro y resistencia:
Está claro que únicamente con este diagrama del circuito poco puedo hacer para conocer el código a introducir y como este reto, tal y como se indica en el post del enunciado, tiene algo de esteganografía lo siguiente que hago es intentar detectar información oculta en el archivo de imagen (arduino.jpg). Para ello, empiezo investigando los metadatos de dicho archivo y veo que el de etiqueta 'Software' tiene un valor que puede indicar algo ('sketch' es el nombre que reciben los programas en Arduino):
Seguidamente, abro el archivo de imagen (arduino jpg) con un editor hexadecimal y veo que se ha utilizado el software 'steghide' para ocultar algo en él. Pruebo a extraer la información utilizando como contraseña 'sketch', y, efectivamente, se extrae de la imagen el archivo Reto_41.ino (la extensión .ino es la que tienen los programas en Arduino):
El segundo paso a dar para resolver este reto tiene que ver con la ingeniería inversa ('Reversing'). Examino el programa extraído y me queda claro que el código a introducir por el teclado es: "C0D3":
Tras este examen preliminar puedo utilizar algún simulador de Arduino para ejecutar el programa y ver que se visualiza en el LCD tras introducirse el código correcto ("C0D3"), o bien completar de forma manual el análisis del programa y obtener lo que se visualizaría si se introdujera dicho código.

Lo hago de ambas maneras:

1.- Utilizando un simulador:

Me parece que esta forma de resolver el reto es la más didáctica, ya que obliga a montar el circuito con la ayuda del archivo de imagen (arduino.jpg) y siguiendo las especificaciones del programa (Reto_41.ino). Para ello uso el simulador 'on-line'  'Tinkercad'.

Una vez hecho lo anterior ejecuto la simulación:
Como se observa en la figura anterior, tras introducirse el código "C0D3" se muestra un mensaje de que éste es correcto y se visualizan ciertos "caracteres" o símbolos en el LCD.

2.- Completar el análisis del programa de forma manual:
Una vez que se verifica que el código introducido por el teclado es correcto, mediante un bucle se visualizan en el LCD 12 "caracteres" personalizados o símbolos que han sido definidos previamente. 

En un LCD cada carácter a visualizar se representa mediante 40 píxeles dispuestos en 8 filas y 5 columnas, y éste tiene un juego de caracteres predefinido, pero también se pueden personalizar caracteres sin más que definir para cada uno de ellos los píxeles que se iluminarán (1) y aquellos que se mantendrán apagados (0). Posteriormente se crean cada uno de los caracteres personalizados (lcd.createChar) y ya estarían listos para su uso.

Tomo como ejemplo el primer carácter que se visualiza en el LCD tras introducirse el código correcto (dispongo mejor la definición del símbolo en el programa para que se aprecien mejor los valores a asignar a los píxeles):
Como se ve, también puedo obtener manualmente todos los "caracteres" personalizados o símbolos que se visualizan en el LCD tras incluirse el código correcto.

Por consiguiente, tanto utilizando un simulador como de forma manual, obtengo los mismos símbolos, pero: ¿Qué significan? Este tercer paso para resolver el reto es el más fácil y enseguida los identifico como pertenecientes al alfabeto braille, con lo que lo único que me queda es decodificarlos con una de las muchas herramientas 'on-line' existentes: 
Con lo que la solución a este reto es: K3YP4D-LCD.

******** PRÓXIMO RETO
Reto 42:   "Un poquito de X fav0R (I)".

Comentarios

Entradas populares de este blog

Criptografía (I): cifrado Vigenère y criptoanálisis Kasiski

Hace unos días mi amigo Iñaki Regidor ( @Inaki_Regidor ), a quien dedico esta entrada :), compartió en las redes sociales un post titulado "Criptografía: el arte de esconder mensajes"  publicado en uno de los blogs de EiTB . En ese post se explican ciertos métodos clásicos para cifrar mensajes , entre ellos el cifrado de Vigenère , y , al final del mismo, se propone un reto consistente en descifrar un mensaje , lo que me ha animado a escribir este post sobre el método Kasiski  para atacar un cifrado polialfabético ( conociendo la clave descifrar el mensaje es muy fácil, pero lo que contaré en este post es la forma de hacerlo sin saberla ). El mensaje a descifrar es el siguiente: LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCUNYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCCQIEHPJTYXVNMLAEZTIMUOFRUFC Como ya he dicho el método de Vigenère es un sistema de sustitución polialfabético , lo que significa que, al contrario que en un sistema de

Criptografía (XXIII): cifrado de Hill (I)

En este post me propongo explicar de forma comprensible lo que he entendido sobre el cifrado de Hill , propuesto por el matemático Lester S. Hill , en 1929, y que se basa en emplear una matriz como clave  para cifrar un texto en claro y su inversa para descifrar el criptograma correspondiente . Hay tres cosas que me gustan de la criptografía clásica, además de que considero que ésta es muy didáctica a la hora de comprender los sistemas criptográficos modernos: la primera de ellas es que me "obliga" a repasar conceptos de matemáticas aprendidos hace mucho tiempo y, desgraciadamente, olvidados también hace demasiado tiempo, y, por consiguiente, que, como dice  Dani , amigo y coautor de este blog, me "obliga" a hacer "gimnasia mental"; la segunda es que, en la mayoría de las ocasiones, pueden cifrarse y descifrase los mensajes, e incluso realizarse el criptoanálisis de los criptogramas, sin más que un simple lápiz y papel, es decir, para mi es como un pasat

¿Qué significa el emblema de la profesión informática? (I)

Todas o muchas profesiones tienen un emblema que las representa simbólicamente y en el caso de la  informática: " es el establecido en la resolución de 11 de noviembre de 1977  para las titulaciones universitarias superiores de informática, y  está constituido por una figura representando en su parte central  un  núcleo toroidal de ferrita , atravesado por  hilos de lectura,  escritura e inhibición . El núcleo está rodeado por  dos ramas : una  de  laurel , como símbolo de recompensa, y la otra, de  olivo , como  símbolo de sabiduría. La  corona  será la  de la casa real  española,  y bajo el escudo se inscribirá el acrónimo de la organización. ". Veamos los diferentes elementos tomando como ejemplo el emblema del COIIE/EIIEO (Colegio Oficial de Ingenieros en Informática del País Vasco/ Euskadiko Informatikako Ingeniarien Elkargo Ofiziala ) . Pero no sólo el COIIE/EIIEO adopta el emblema establecido en dicha resolución, sino que éste se adopta también como im