Audio cheatsheet¶
Command recipes for audio challenges, ordered most-common first. Depth on the Audio technique page.
Always look at the frequency domain before the bytes.
Spectrogram (do this first)¶
Text and QR codes are often drawn in the spectrogram — check above 20 kHz and below 20 Hz too.
$ sox audio.wav -n spectrogram -o spec.png # quick spectrogram
$ sox audio.wav -n spectrogram -X 500 -y 1025 -o spec.png # higher resolution
$ ffmpeg -i audio.wav -lavfi showspectrumpic=s=1280x720 spec.png
Interactive: open in Audacity (Spectrogram track view) or Sonic Visualiser and zoom the frequency axis.
Waveform, channels & phase¶
$ audacity audio.wav # eyeball the waveform for Morse on/off bursts
- Stereo channel tricks → the payload may be one channel, or the difference of the two. Isolate/subtract in Audacity, or:
$ sox audio.wav left.wav remix 1 # left channel only
$ sox audio.wav right.wav remix 2 # right channel only
$ sox audio.wav mono.wav remix 1,2 # sum (a phase-cancelled payload vanishes)
- Reverse / slow down → hidden speech is often reversed or time-stretched:
sox audio.wav rev.wav reverse, or change Tempo in Audacity.
Sample LSB (WAV)¶
$ stegolsb wavsteg -r -i audio.wav -o out.bin -n 1 -b 1000 # 1 LSB, 1000 bytes
$ file out.bin
WavSteg is in the stego-lsb package (pip install stego-lsb). Vary -n
(bits per sample) and -b (byte count) if the output is garbage.
Signalling: SSTV / DTMF / FSK / Morse¶
$ multimon-ng -a MORSE_CW -a DTMF -a FSK -t wav audio.wav # decode many at once
$ minimodem --rx 1200 < audio.wav # Bell/FSK modem tones (try 300/1200)
- SSTV (image over audio) → decode with QSSTV
(feed the audio to a virtual mic), or
pip install sstv→sstv -d audio.wav -o out.png. - DTMF (phone dial tones) →
multimon-ng -a DTMF, or an online DTMF decoder. - Morse → obvious on/off bursts in the waveform;
multimon-ng -a MORSE_CW.
Password-protected containers¶
$ steghide extract -sf audio.wav -p '' # steghide supports WAV/AU
- DeepSound → a Windows tool; carve/mount the container, or use community
extractors. The magic string
DSCFinstringsbetrays a DeepSound file.
WAV header tricks¶
- A shrunken DataSize in the WAV header hides samples past the declared end —
edit the size field (or set it to
0xFFFFFFFF) and re-open to reveal them. - Raw import: Audacity → File → Import → Raw Data interprets a headerless blob
as PCM — useful when
filesays "data".
Related¶
- Tools: steghide · strings.
- Depth: Audio technique page · Encodings cheatsheet (for a decoded payload).