PICOCTF 2019 • FORENSICS • AUDIO STEGANOGRAPHY / SSTV

m00nwalk: Apollo 11 SSTV Slow-Scan Television Audio Demodulation

By Abdo•Aug 31, 2026
m00nwalk Analysis
Official Challenge Prompt

“Decode this message from the moon. Hints: How did pictures get sent back from the moon? What is the name of the Apollo 11 audio format?”

● Category: Forensics / Audio Steganography● Points: 250 PTS● Flag Format: picoCTF{...}
Provided File (Download & Practice)Download message.wavSize: 11 MB • WAV Audio
Mode: SSTV Scottie 1

Signal Analysis: Slow-Scan Television (SSTV) Protocol

The provided audio artifact (message.wav) is an analog frequency-modulated audio transmission encoded using Slow-Scan Television (SSTV). The challenge title and hint (“how did pictures get sent from moon on Apollo 11”) points to SSTV modulation. The audio signal frequency encodes raster scan line luminance and chrominance (specifically the Scottie 1 mode header calibration tone), which decodes back into an RGB raster image when passed through a demodulator.

METHOD A: ZERO-SETUP MOBILE APP (ROBOT36)

1. 10-Second Smartphone Decode (Robot36)

  1. Install Robot36 - SSTV Image Decoder (Free on Android Google Play Store) or BlackCat SSTV on iOS.
  2. Play message.wav on your PC speakers.
  3. Hold your phone near the speaker: The app automatically detects the Scottie 1 sync pulse and draws the image line-by-line in real time!
METHOD B: AUTOMATED PYTHON SSTV DECODER

2. Python SSTV Decoder Script (`solve.py`)

import sstv.common
import sstv.decode
from PIL import Image

# Suppress progress output
sstv.common.log_message = lambda *args, **kwargs: None
sstv.decode.log_message = lambda *args, **kwargs: None
sstv.common.progress_bar = lambda *args, **kwargs: None
sstv.decode.progress_bar = lambda *args, **kwargs: None

# Decode SSTV audio signal (Scottie 1 mode)
decoder = sstv.decode.SSTVDecoder('message.wav')
img = decoder.decode()

# Save rotated image for upright reading
img.rotate(180).save('result_rotated.png')
print("[+] SSTV Decoded successfully! Check result_rotated.png")
Terminal Command (PySSTV CLI):
sstv -d message.wav -o result.png

3. Decoded Flag

Extracted Secret Flag:

picoCTF{beep_boop_im_in_space}

4. The Complete Investigation Path & Mental Roadmap

STEP 1
Audio Signal Recognition

Listened to message.wav and identified rhythmic chirping characteristic of Slow-Scan Television (SSTV).

STEP 2
Demodulation via SSTV Decoder

Decoded the audio waveform using Robot36 / Python sstv in Scottie 1 mode.

STEP 3
Visual Flag Capture

Read handwritten flag text from the rendered image: picoCTF{beep_boop_im_in_space}.