Challenge #12: The Silent Signal

MEDIUM Steganography / Audio Forensics 🏆 175 pts

Challenge #12: The Silent Signal

steganography audio wav lsb python

📋 Mission Brief

A suspicious audio file was recovered from a suspect device during a forensic investigation. To the human ear it sounds like a normal tone — but our analysts believe it contains a hidden message encoded in the audio samples.

🎯 The Challenge

You have been given a WAV audio file recovered from a suspect’s device. The file plays a normal tone, but the data may contain a steganographically-hidden message.

The technique: Least Significant Bit (LSB) encoding hides data in the lowest bit of each audio sample. The human ear cannot detect 1-bit changes in audio amplitude.

Extraction method:
– Read audio samples as 16-bit integers
– Extract the LSB (bit 0) from each sample
– Group 8 consecutive bits into bytes
– Convert bytes to ASCII characters
– Continue until you hit a null byte (\x00)

Python starter:
import wave, struct
wav = wave.open('suspicious_audio.wav')
frames = wav.readframes(wav.getnframes())
samples = struct.unpack('<' + 'h' * (len(frames)//2), frames)
⬇ DOWNLOAD CHALLENGE FILE

ch12_audio_steg.zip

The flag starts with PlainlySec{ — so the first character P has ASCII value 80 = binary 01010000. Check the first 8 samples: their LSBs should be 0,1,0,1,0,0,0,0. If you confirm this, you are on the right track!

🚩 Submit Flag

Flag format: PlainlySec{...}