Link: https://backdoor.sdslabs.co/challenges/DTUNE
Author: Vishrut Kumar Mishra
Points: 70
Category: forensic, sound
Description
Vector recorded this audio when Gill Bates was opening his/her vault and Gru stole this recording from him (stealing from a thief ain’t a crime, right?). Help Gru decode this message so that he can …(Use your imagination)
Clue: Message consists of upcase letters.
tl;dr
The provided file consists of a recorded touch-tone dialing sequence (DTMF format). After decoding, one needs to map key presses to letters (old style, with physical keyboard, SMS texting).
Solution
After listening to the sound, it was clear that it was a touch-tone dialing sequence, or more technically – DMTF. In short – it was an encoded sequence of digits.
With this on-line tool we found we have decoded the digits:
1 |
numbers = [8, 4, 3, 0, 3, 5, 2, 4, 0, 4, 7, 7, 0, 7, 4, 4, 2, 2, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *] |
One of the ideas we came up with was a DTMF encoded session of old-style SMS writing.
We’ve created this mapping:
1 2 3 4 5 6 7 8 9 10 11 |
string_map = { 0: ' ', 2: 'abc', 3: 'def', 4: 'ghi', 5: 'jkl', 6: 'mno', 7: 'pqrs', 8: 'tuv', 9: 'wxyz', } |
Still there was one problem. By listening to the sound we could clearly distinguish that the tones were grouped. The same tones (repetitions of a single digit) were separated with short intervals. We observed that the tool we had been using might have had problems with those short separators, so we have (manually, using Audacity) counted the repetitions and merged them into single digits.
Modified audio:
1 |
rep = [1, 2, 2, 1, 3, 3, 1, 1, 1, 3, 4, 1, 4, 2, 1, 1, 1, 1, 1, 3, 3, *, *, *, *, *, *, *, *, *, *, *, *, *] |
1 |
nums = [8, 4, 3, 0, 3, 5, 2, 4, 0, 4, 7, 0, 7, 4, 2, 2, 5, 6, 0, 6, *, *, *, *, *, *, *, *, *, *, *, *, *, *] |
1 2 3 4 |
out = '' for n, r in zip(nums, rep): out+= string_map[n][r - 1] print out |
Leave a Reply
You must be logged in to post a comment.