[Steganography] audios #HackTheFDI

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:

stegoaudio_web

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

stegoaudio1_done

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:

stegoaudio2_done

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.

stegoaudo3_freq

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.

stegoaudio3_morse

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

stegoaudio3_done

Ejecutamos el programa, seleccionamos decode y obtenemos la flag: FDIUCMFOREVER

Esta entrada fue publicada en CTF, HackTheFDI, Steganography. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s