Patrones, imágenes y locuras

Julio 27th, 2010

Hola amigos,

El otro día estaba leyendo 48bits y me encontré con un artículo que me encantó titulado En ocasiones… veo patrones… Básicamente expone que a partir de cualquier fichero, basándonos en su contenido, podemos generar una imagen que podemos usar para detectar, de manera visual, los patrones que contiene.

Así, de un solo vistazo, podemos ver lo bueno que es un generador de números aleatorios, como se reparte la información en un fichero comprimido, o donde se encuentra la parte relevante de un boot loader. El caso es que me gustó tanto la idea que me hice mi propio generador de patrones y me puse a “patronizarlo” todo.

Aquí tenéis la imagen generada por un fichero de textos (baja entropía, colores similares, muchos patrones):

Y está otra es la que me generó un JPG (la parte negra es la dedicada a las cabeceras JPG, en el resto del fichero no se perciben patrones):

Aquí tenéis los patrones de un rar (debido a su alta entropía, prácticamente no tiene patrones):

Luego pensé, “Hey, esto de ver los patrones está genial… pero aún sería mejor volver a generar el fichero original a partir de la imagen”. Total, tengo toda la información que necesito en la imagen, sólo tengo que volver a colocarla en el mismo orden. Así que me puse de nuevo manos a los obra y creé la subrutina de inversión.

Así que sí, podéis coger esas imágenes que he puesto en este post y ver lo que hay en ese txt, esa imagen y ese rar. También podéis generar vuestro propias imágenes y subirlas a cualquier lado bordeando los límites de lo legal… pero es que es tan divertido.

Aquí os dejo un par de ejemplos de uso:

Para generar una imagen:

$ java patronus gen cosas.txt cosas.png

Para recuperar el fichero original a partir de la imagen:

$ java patronus rev cosas.png orig.txt

En la imagen no guardo la extensión original del fichero (aunque podría hacerlo), así que tenéis que saber el formato del fichero original si lo queréis visualizar.

Como está escrito en java, os da igual usar Linux, Windows o Mac, sólo buscad el binario java y ejecutadlo como en el ejemplo en donde se encuentre patronus.class. También os dejo las fuentes para que podáis modificar lo que os parezca (se distribuye bajo licencia GPL).

Por cierto, sé que patronus no es un nombre apropiado para el programa, pero lo escribí yo y lo llamó como quiera (hala, que a gusto me he quedado).

Sed buenos

Descargar patronus.class

Descargar patronus.java

Categorías: interesante |

Deja un comentario