Category: Steganography
Flag: UVT{5t4rsh1p_3ch03s_fr0m_th3_0ut3r_v01d}
Challenge Description
A layered audio transmission masks a space message within a thin, high‑frequency band, buried under a carrier. With the right tuning, the faint signal resolves into a drifting cipher beyond the audible, like a relay echoing from deep space. Ready to hunt the signal and decode what’s hiding between the bands?
Analysis
I started with cheap triage to confirm the file type and properties. The WAV was clean PCM audio (mono, 48 kHz, 16-bit, 20 seconds), which is exactly the kind of input where hidden high-frequency content can be visualized with a spectrogram.
file "frequencies.wav"frequencies.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 48000 Hzexiftool "frequencies.wav"File Type : WAVEncoding : Microsoft PCMNum Channels : 1Sample Rate : 48000Bits Per Sample : 16Duration : 20.00 sOnce the format was confirmed, I generated a spectrogram image from the audio and saved it as spectrogram_full.png (plus a high-band version for checking).
saved spectrogram_full.png and spectrogram_high.pngSdB range -222.79184 -30.163403High dB range -222.79184 -131.31708That was the key moment: the flag text was directly visible in spectrogram_full.png and could be read manually from the rendered image.

Solution
# !/usr/bin/env python3.12import waveimport numpy as npimport matplotlib.pyplot as pltfrom scipy.signal import spectrogram
with wave.open("frequencies.wav", "rb") as w: fs = w.getframerate() n = w.getnframes() ch = w.getnchannels() data = w.readframes(n)
arr = np.frombuffer(data, dtype="<i2").astype(np.float32)if ch > 1: arr = arr.reshape(-1, ch)[:, 0]arr /= 32768.0
f, t, S = spectrogram( arr, fs=fs, window="hann", nperseg=4096, noverlap=3584, mode="magnitude",)SdB = 20 * np.log10(S + 1e-12)
plt.figure(figsize=(14, 6))plt.pcolormesh(t, f, SdB, shading="gouraud", cmap="magma", vmin=-140, vmax=-40)plt.ylim(0, 24000)plt.xlabel("Time (s)")plt.ylabel("Frequency (Hz)")plt.title("frequencies.wav spectrogram")plt.colorbar(label="dB")plt.tight_layout()plt.savefig("spectrogram_full.png", dpi=200)
print("saved spectrogram_full.png")python3.12 solve.pysaved spectrogram_full.pngUVT{5t4rsh1p_3ch03s_fr0m_th3_0ut3r_v01d}