Como los retos de esteganografía de audio son bastante fáciles y cortos de resolver, voy a poner la solución de los 3 en un mismo post.
Audio 1:
El reto ya nos da una pista enorme que dice que se trata de un DTMF (Dual-Tone Multi-Frequency) que según wikipedia es usado para la señalización de telecomunicaciones sobre líneas telefónicas analógicas en la banda de frecuencia vocal entre teléfonos u otros equipos de comunicaciones y la central telefónica.
Primero busqué por internet si existía algún decodificador DTMF online pero no encontré nada, luego me fui a github y allí encontré un programa en python que decodificaba los tonos, hice unas pequeñas modificaciones para que pidiera el audio por parámetro y mostrara los resultados en la misma linea.
Justo después del main añadimos:
if __name__ == '__main__': # load wav file if len(sys.argv) != 2: print "Usage " + sys.argv[0] + " file.wav" sys.exit(1) wav = wave.open(sys.argv[1], 'r')
y en el print de la cuarta línea empezando por el final:
print value,
Ahora ejecutamos el programa y le pasamos como parámetro el audio:
$ python dtmf_decoder.py dtmf.wav
y ahí tenemos la flag del audio 1: 2003A09B11C
Audio 2:
El segundo audio no hice captura de pantalla de la página del reto, pero daba información acerca del hundimiento del Acorazado Maine, y una pista para que buscaras en internet sobre quién fue uno de los causantes de acusar a España y que premio importante lleva su nombre.
Buscando en la Wikipedia encontramos el nombre de dos personas William Randolph Hearst y Joseph Pulitzer, de los cuales buscando por el nombre y apellido con la palabra premio delante encontramos los premios Pulitzer.
Probamos con el steghide a meter las contraseñas Pulitzer y pulitzer.
$ steghide extract -sf audio2.wav -p Pulitzer
$ steghide extract -sf audio2.wav -p pulitzer
La contraseña buena es pulitzer y obtenemos nuestra flag:
La flag es: WUUoMUuZ
Audio 3:
Del reto 3 tampoco tengo captura de pantalla de la página web, pero creo que no tenía ninguna pista, solo el siguiente audio:
Esta vez como es un fichero mp3 descarté steghide ya que no soporta este tipo de ficheros para ocultar datos, así que probé strings audio.mp3 y hexdump -C audio.mp3 sin obtener nada interesante.
Luego probé en Windows DeepSound, programa usado por Elliot en la serie de Mr. Robot para ocultar datos en ficheros de audio los cuales luego grababa en cds, pero sin obtener resultados.
Por último lo abrí con Sonic Visualiser, y al ver el gráfico de la frecuencia del audio vi algo raro.
Reproduzco el sonido justo donde está mas verde en el gráfico, y suena unos pitidos que parece código morse, amplio en la ventana principal y me pongo a transcribir las barras finas por puntos y las barras mas gruesas por guiones.
Obteniendo el siguiente código morse: ..-. -.. .. ..- -.-. — ..-. — .-. . …- . .-.
Para decodificarlo usé un programa que me hice en python hace tiempo:
# -*- coding: utf-8 -*- morse = {'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.' } if __name__ == '__main__': print " 1) Encode" print " 2) Decode" opc = int(raw_input("Option: ")) if opc > 0 and opc < 3: if opc == 1: line = raw_input("Insert string to morse encode: ") if not line.isalnum(): print "The string must be alphanumeric" else: result = "" for c in line: result += morse[c.upper()] + " " print result elif opc == 2: line = raw_input("Insert morse code: ") result = "" for code in line.split(" "): result += [k for k,v in morse.iteritems() if v == code][0] print result
Ejecutamos el programa, seleccionamos decode y obtenemos la flag: FDIUCMFOREVER