Skip to content

Secret Spy Message

Description

  • Category: Steganography 
  • Points: 100 / 500 
  • Goal: Fun and learn about DTMF

Statement

Our secret spy has recorded something that seems useful but we don't know how! Can you help us?  The flag is: ONA{sha1(password)}

====

Nuestro espía secreto grabó algo que parece ser útil pero no sabemos cómo utilizarlo! Nos ayudás? El flag es: ONA{sha1(password)}

File

audio.wav

Solution

This challenge was built with the goal of having some fun. It didn't require knowledge but just a little bit of googling and the correct tools. 

The file provided is a .wav file (audio) with some noises. If you listen for a couple of secs the audio you'll notice that sound is familiar. Seems to be the sound made by a phone when you're dialing.  It could be possible to know what was dialed?

Well, this sound is not other than the signal being sent through the telecommunication channel. With some googling you can find that this type of encoding is called DTMF. 

So now we have an audio of DTMF tones that we want to decode (we want to get the key that was pressed from its sound).

The following table can be found in this link:

It depicts the combination of frequencies for each of the different numbers.

Therefore, we could analyze the frequency spectrum of the audio with some tool (like Audacity) and match each time a key was pressed with the corresponding frequency to actually get the pressed number.

Fortunately, some automatic tools which will do the work for us already exists.  The one I used was dtmfcheck for linux. It's not the only one, Audacity has a plugin called phonalyzer that will do the job as well. Otherwise, manual analysis will take longer but still would have been useful. 

With dtmfcheck we just need to run provide the .wav file as input: 

Analyzing the output we will see that we have the numbers that were pressed (just afrter the "Detected" string).  With the following command line we can extract them without any space between them: 

dtmfcheck audio_espia.wav | awk -F Detected '{print $2}' | cut -f1 -d '(' | tr -d "\n" | tr -d ' '

Why we put it all of them together? Because the tool is capable of determing which keys were pressed but sometimes the pause between them may cause issues. For example: if the serie 777777 was dialed, it wouldn't be possible to distinguish between 77,7777 and 777,777 (which, as we are gonna see later, are different things).

In order to solve that we should carefully listen again the audio and create insert the pauses manually where they are.

Once this action is carried out, we end up with the following message: 

8 44 33 7 2 7777 7777 9 666 777 3 444 7777 6 666 66 55 33 999 7777 2 777 33 222 666 666 555 444 333 999 666 88 4 444 888 33 8 44 33 6 22 2 66 2 66 2 7777

Taking into account that it should be a message, and that a phone was used, it is possible to deduce that it was written as SMS in older phones used to do. Again, some googling and using a very well known page for encoding/encryption algorithms (dcode), we find out that we have a way to """decrypt""" it (called Multi-tap Cipher (SMS Mode ABC)).

After decryption we get: the string:

THEPASSWORDISMONKEYSARECOOLIFYOUGIVETHEMBANANAS

Due to the format of the flag requires the "ONA{}" the final answer is: 

ONA{8cce9ae2618ea9aff3a00f90c99e570842c528e9}