Hace unos días propusimos un nuevo reto en el blog, el cual consistía en obtener el lugar exacto donde se reuniría la banda que se había estado investigando desde hacía unos meses gracias la obtención de un archivo que había sido enviado a uno de los componentes y dos SMS guardados en el teléfono móvil de uno de los participantes de la banda que había sido detenido recientemente. Así que en esta ocasión, toca explicar la solución del mismo :)
Si analizábamos el fichero capturado, podíamos ver que se trataba de un texto codificado en base64, pero que al hacer su decodificación seguíamos obteniendo otro texto codificado en base64. Para solucionarlo, el primer SMS capturado decía: “Recuerda, la quinta es la importante.”, lo que significa que el archivo original se obtendría a la quinta decodificación. Por lo tanto, lo único que había que hacer era ir decodificando los archivos hasta llegar a la quinta decodificación.
Al realizar los pasos anteriores, obteníamos la siguiente imagen en formato GIF, la cual vemos que es un callejero de Barcelona (ciudad que puede ser fácilmente identificada por la “Sagrada Familia”).
Así que si probábamos “Barcelona” en el validador de la parte 1 podíamos abrir el archivo sin problemas, obteniendo así la solución a la primera parte del reto :)
Si investigábamos un poco esta imagen, lo único que encontrábamos era un comentario en el que se decía que no había nada por aquí, así que había que seguir buscando en otro sitio ;)
La siguiente parte del reto, se centraba en el contenido del segundo SMS, ya que decía: “Te esperamos en:uÖ%äFeM!”, lo cual parece indicar que nos está dando el lugar exacto del encuentro. El problema está en como interpretar la cadena “uÖ%äFeM!”, ya que no parece una codificación muy común.
La pista en este caso, se encuentra en el hecho de que se trata de un SMS, y los SMS utilizan las especificaciones establecidas en el GSM 3.40, donde se dice que los mensajes de texto serán codificados mediante el formato PDU.
Estudiando este formato, vemos como los caracteres del texto se codifican con 7 bits en vez de 8 para poder enviar un número mayor de caracteres. En la siguiente imagen podemos ver como funciona está codificación para el caso del contenido del mensaje.
En Internet, existen varios sites que nos permiten codificar/decodificar mensajes PDU, así que usando uno de ellos (como por ejemplo http://twit88.com/home/utility/sms-pdu-encode-decode) y obteniendo la codificación PDU de nuestra incógnita del segundo SMS, obtenemos la cadena hexadecimal “756E696F2C3743” (extrayendo aquellas partes que no nos interesan, como el número del centro de mensajes, el número del sender, la longitud del mensaje, etc.), la cual pasándola a caracteres ASCII se convierte en “unio,7C”. Así que probando este resultado como password del validador2, podemos abrir el archivo y comprobar como el nombre de la calle y el número donde se realizará el encuentro será “unio,7C”, consiguiendo así la segunda parte del reto :D
Hasta aquí llega la solución del reto. Como siempre, felicitar a aquellos que habéis conseguido llegar a la solución y los que no, espero que al menos hayáis pasado un buen rato intentándolo ;)