_________________________________________________________________________
Just do it.
INPUT
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
_________________________________________________________________________
Bueno, cuando leí el enunciado, “hazlo”… que decir, me quedé con una cara más que curiosa. Así que decidí pedir la prueba, para ver qué era lo que querían estos señores de Tuenti. Al recibir un mensaje ilegible, lo primero que se te pasa por la cabeza es que debe estar encriptado, así que me pasé por alguna que otra web con capacidad de desencriptar, y para mi sorpresa en base 64 aparecía una cabecera que ponía PNG, y al final del archivo ponía algo así como… la imágen contiene más información de lo que se ve.
Bueno, en realidad sobre esteganografía yo no sabía absolutamente nada, pero si buscas cómo ocultar información en una imágen te referencia a wikipedia que es muy sabia, y en esa página en inglés tiene muuuuchas técnicas. Dado que estábamos en el 17 tenía que ser asequible a todos los públicos, ergo, probé la más sencilla. Y te voy a decir, esa fue la peor parte. Saber qué tenía que hacer, pero no saber cómo.
Primero tomé el archivo por bits y lo apliqué, el resultado, un mensaje completamente ilegible, después pensé que quizá si aplicaba eso mismo a las componentes de color el resultado sería diferente, y nada. Lo dejé como RGB, que era lo lógico en realidad, y no hubo manera. No te voy a negar que estuve a punto de tirar la toalla. En ese momento se me ocurrió una feliz idea, resulta que tengo en mi ordenador instalado Matlab, un programita más que estupendo que entre otras cosas te permite visualizar las imágenes tal y como son, es decir, el valor de cada bit en cada una de las componentes. Y para mi sorpresa, los valores en la primera fila eran un poco… peculiares por decirlo de alguna manera. A pesar de ser bastante parecidos a los del resto de la imágen (30 o 32) más o menos, en la primera fila eran 31 y 33, y te planteas que si tienen a 1 el último bit, debe ser por eso que eran impares, alternados con pares. Además se alternaban sin ningún sentido aparente.
Et voilá!, resulta que me puse a probar solamente la primera fila, de todas las formas posibles, sabía que el truco estaba en eso, y en una de ellas el programa me devolvió que era un crack!
Así terminó todo, y evidentemente, a las 4 de la mañana, me fui a la cama más que contento.
UserInterface Class:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Clase encargada de mantener el bucle de ejecución del programa hasta el fin de linea.
* @author Javier de Pedro López
*/
public class UserInterface {
/**
* Permite mantener el bucle de lecutra.
*/
public void run() throws IOException{
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//Bucle que realiza las lecturas hasta que lo recibido sea EOF (null)
do{
line = reader.readLine();
if (line != null && !line.equals("")){
System.out.println("f4f73cace00537699eb9ca2cc6b974bb4c7f0e1d");
}
} while(line != null);
}
}
Base64Decoder Class:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import org.apache.commons.codec.binary.Base64;
/**
* Realiza la decodificación de un String en base 64.
* @author Javier de Pedro López
*/
public class Base64Decoder{
//ATRIBUTOS//
private String _decod;
private BufferedImage _image;
//CONSTRUCTOR//
/**
* Instancia un nuevo decodificador de base 64.
* @param cod codigo a decodificar.
*/
public Base64Decoder(String cod) throws IOException{
_decod = "";
_image = ImageIO.read(new File("./Imagen.png"));
Base64 decod = new Base64();
byte[] bytes = decod.decode(cod.getBytes());
int[] bytesInt = decodeText(bytes);
for (int i = 0; i < bytesInt.length; i++){
_decod += (char) bytesInt[i];
}
}
//METODOS//
/**
* Permite obtener la decodificacion de la estenografia.
* @return la decodificacion de la imagen.
*/
public String getDecod (){
return _decod;
}
private int[] decodeText(byte[] image){
int elem = 0;
ArrayList<Integer> arrBytes = new ArrayList<Integer>();
int cont = 0;
for (int i = 0; i < _image.getWidth(); i++){
int pixelCol = _image.getRGB(i,0);
int r = (pixelCol >>> 16) & 0xff;
int g = (pixelCol >>> 8) & 0xff;
int b = pixelCol & 0xff;
elem = (((b & 00000001) | elem) << 1);
cont++;
if (cont % 8 == 0 && cont != 0){
cont = 0;
elem = elem >> 1;
arrBytes.add(elem);
elem = 0;
}
elem = (((g & 00000001) | elem) << 1);
cont++;
if (cont % 8 == 0 && cont != 0){
cont = 0;
elem = elem >> 1;
arrBytes.add(elem);
elem = 0;
}
elem = (((r & 00000001) | elem) << 1);
cont++;
if (cont % 8 == 0 && cont != 0){
cont = 0;
elem = elem >> 1;
arrBytes.add(elem);
elem = 0;
}
}
int[] result = new int[arrBytes.size()];
for(int i=0; i < arrBytes.size(); ++i){
result[i] = (int) (arrBytes.get(i) & 0xff);
}
return result;
}
}
Muy buenas Emilio.
Tienes en este mismo blog un comentario que explica paso a paso todo el proceso que seguí para resolver el desafío. Si aún habiendo leído dicho comentario sigues teniendo dudas no tendré problemas en resolvértelas. Por otra parte sé que la base 64 no es más que una manera de expresar la información y no tanto una forma de encriptar, no obstante es necesario saber que se encuentra codificado en tal base para resolver el problema.
Un saludo.
Y las letras y números que se imprimen son el resultado que había que enviar, no algo que haya que descodificar.
Bueno yo intente hacer las explicaciones lo mejor posibles siento si no se entiende demasiado bien. Ahora mismo no tengo ordenador cerca y te estoy respondiendo desde el móvil, a ver si cuando llegue a casa te lo pongo algo mejor.
Y de nada, traté de exponerlo lo mejor posible. Un saludo
Vaya potra colega. Sin tener ni claro lo que es base64 (no es un mecanismo de encriptación, sino de codificación) lo identificas y manejas de inmediato. De ahí a ver bits peculiares en la primera fila y de eso a imprimir la solución:
System.out.println(“f4f73cace00537699eb9ca2cc6b974bb4c7f0e1d”);
Amigo, o te explicas fatal o se te ha aparecido la virgen simultaneamente 128 veces en 64 universos paralelos.
Hola! No esperaba ni respuesta y me encuentro seis párrafos bien escritos y sin faltas, PLAS PLAS (sin coñas). Y sobre lo que cuentas pues sólo puedo quitarme el sombrero. La parte del Matlab es una idea feliz, pero lo de ir probando todas las formas de sacar el bit de menor peso de cada componente del RGB SE LAS TRAE. Genial.
Yo no pude apuntarme al concurso (me enteré tarde y aunque hubiera podido este mes me venía fatal), pero ayer por curiosidad me dio por probar con este reto. No sé si fue por estar ya fuera de concurso (no hay la misma emoción) o ser tan tarde que cuando vi que era un reto de “stegoanálisis-feliz” se me quitaron las ganas de más pruebas y di con tu blog.
Una cosa que también me preguntaba es por el resto de ficheros de prueba de este reto. ¿O era esta imagen sólo?
Salu2 ;)
Hola de nuevo tonikelope. Espero entonces que el blog te haya servido para lo que fue creado, a medida que vaya teniendo más tiempo, igual comento el resto de retos cómo los resolví, porque en el momento en el que lo hice (y cuando era también el concurso) estaba de exámenes, y no le pude dedicar todo el tiempo que me hubiera gustado la verdad.
El código, igual a veces no es todo lo óptimo y todo lo bueno que debería, pero estoy en 2º de carrera (pasando ya a 3º) y aún queda mucho por aprender.
Respondiendo a tu pregunta sobre los ficheros de prueba, en realidad lo único que había era el código que tengo publicado en el artículo, que te decía que hicieras el submit con un código de ahí la línea del UserInterface:
System.out.println(“f4f73cace00537699eb9ca2cc6b974bb4c7f0e1d”);
Un saludo, y ánimo, que no son tan terribles el resto de los retos (el 19 si… XD), pero de verdad, te fuiste a poner con el más complicado. Te animo a que intentes alguno más. Otro complicadillo fue el 7… por si te pasas directamente a él.
;)
¿Cómo se te ocurrió ir sacando los bits en ese orden y sólo los pixels de la primera fila? ¿inspiración divina? ¿Google?
Bienvenido a la web tonikelope. Agradezco que te hayas tomado la molestia de leer con detenimiento el código para que la explición me sea un poco más sencilla. Te voy a ir indicando todos los pasos que seguí hasta llegar a la solución, a eso de las 4 de la mañana dos días antes de finalizar el concurso ;)
Bueno, cuando leí el enunciado, “hazlo”… que decir, me quedé con una cara más que curiosa. Así que decidí pedir la prueba, para ver qué era lo que querían estos señores de Tuenti. Al recibir un mensaje ilegible, lo primero que se te pasa por la cabeza es que debe estar encriptado, así que me pasé por alguna que otra web con capacidad de desencriptar, y para mi sorpresa en base 64 aparecía una cabecera que ponía PNG, y al final del archivo ponía algo así como… la imágen contiene más información de lo que se ve.
Bueno, en realidad sobre esteganografía yo no sabía absolutamente nada, pero si buscas cómo ocultar información en una imágen te referencia a wikipedia que es muy sabia, y en esa página en inglés tiene muuuuchas técnicas. Dado que estábamos en el 17 tenía que ser asequible a todos los públicos, ergo, probé la más sencilla. Y te voy a decir, esa fue la peor parte. Saber qué tenía que hacer, pero no saber cómo.
Primero tomé el archivo por bits y lo apliqué, el resultado, un mensaje completamente ilegible, después pensé que quizá si aplicaba eso mismo a las componentes de color el resultado sería diferente, y nada. Lo dejé como RGB, que era lo lógico en realidad, y no hubo manera. No te voy a negar que estuve a punto de tirar la toalla. En ese momento se me ocurrió una feliz idea, resulta que tengo en mi ordenador instalado Matlab, un programita más que estupendo que entre otras cosas te permite visualizar las imágenes tal y como son, es decir, el valor de cada bit en cada una de las componentes. Y para mi sorpresa, los valores en la primera fila eran un poco… peculiares por decirlo de alguna manera. A pesar de ser bastante parecidos a los del resto de la imágen (30 o 32) más o menos, en la primera fila eran 31 y 33, y te planteas que si tienen a 1 el último bit, debe ser por eso que eran impares, alternados con pares. Además se alternaban sin ningún sentido aparente.
Et voilá!, resulta que me puse a probar solamente la primera fila, de todas las formas posibles, sabía que el truco estaba en eso, y en una de ellas el programa me devolvió que era un crack!
Así terminó todo, y evidentemente, a las 4 de la mañana, me fui a la cama más que contento.
Un saludo compañero.