m00nwalk2: Audio Steganography & SSTV Puzzle Deconstruction

“Re-visit the last scene. More clues, same tunes. The flag is not in the same place.”
picoCTF{...}1. Dual-Layer Steganography Architecture
In m00nwalk 1, decoding message.wav with an SSTV decoder directly rendered an image displaying the flag picoCTF{beep_boop_im_in_space}.
In m00nwalk2, we are given four audio files: message.wav, clue1.wav, clue2.wav, and clue3.wav. If we decode message.wav again, it merely presents the identical decoy picture. The real payload is hidden via a dual-layer scheme:
Layer 1 (Macro / Analog Signal): Audio frequency modulation decoded into raster SSTV images (Clues 1, 2, 3).
Layer 2 (Micro / Sample LSBs): Encrypted ciphertext injected into the uncompressed PCM audio bytes of message.wav via steghide.
2. Demodulating the Clues with SSTV
We process each audio clue through the command-line SSTV decoder:
sstv -d clue1.wav -o clue1.png
sstv -d clue2.wav -o clue2.png
sstv -d clue3.wav -o clue3.png
Shows a stegosaurus note: Password: hidden_stegosaurus.

Official Kali Linux motto: “The quieter you are, the more you can HEAR”.

Names Alan Eliasen (creator of FutureBoy.us), whose steganography service runs on steghide.

Decoding message.wav reveals the original decoy image with the m00nwalk 1 flag. This confirms the author's hint: the true flag is embedded elsewhere within the carrier file.
3. Carving Hidden LSB Data with Steghide
Uncompressed 16-bit WAV files store sample amplitudes ranging from -32,768 to +32,767. steghide encrypts the payload with our passphrase (hidden_stegosaurus) and alters the Least Significant Bit (LSB) of pseudo-randomly selected audio samples. This tiny alteration is completely inaudible to humans and invisible to SSTV demodulators.
steghide extract -sf message.wav -p hidden_stegosaurus
cat steganopayload*.txtsteghide extract -sf message.wav -p hidden_stegosaurus
Get-Content steganopayload*.txt# steghide execution output
wrote extracted data to "steganopayload12154.txt".
picoCTF{the_answer_lies_hidden_in_plain_sight}
4. Extracted Flag
Decrypted Secret Flag:
5. Summary Matrix
| Step | Objective | Tool | Exact Command | Key Finding |
|---|---|---|---|---|
| 1 | Demodulate Clue 1 | sstv | sstv -d clue1.wav -o clue1.png | hidden_stegosaurus |
| 2 | Demodulate Clue 2 | sstv | sstv -d clue2.wav -o clue2.png | Kali Linux Stego Suite |
| 3 | Demodulate Clue 3 | sstv | sstv -d clue3.wav -o clue3.png | FutureBoy => steghide |
| 4 | Carve Payload | steghide | steghide extract -sf message.wav -p ... | steganopayload12154.txt |