← Back to Writeups
CUSTOMMediumSteganography

Earth Hum

XESXOR9/2/20262 min read
#steganography#custom#medium#morse_audio_decoding#noise_profile_reduction#signal_trimming

Earth Hum

Platform: hackerlab | Category: Steganography | Type: Challenge | Difficulty: Medium | OS: NA | Author: XESXOR | Date: 2026-04-04 | Status: Solved Techniques: morse_audio_decoding, noise_profile_reduction, signal_trimming

Summary

Task: analyze a noisy WAV file where the payload is not visible through metadata or common audio-stego shortcuts. Solution: use Audacity noise reduction, trim the active region, and decode the recovered Morse-like pulses to obtain the flag text.

Earth Hum — Hackerlab

Description

Гул Земли

English summary: the challenge provided a single audio file, earth.wav, and the goal was to recover a flag in the CODEBY{...} format. The correct path was not song identification or metadata inspection: the useful signal was Morse code hidden inside heavy noise.

Analysis

Reconnaissance

The file was a long WAV recording with a noisy, low-information sound profile. Early checks such as metadata review, raw string extraction, and common byte/sample LSB ideas did not produce a valid CODEBY{...} flag. ‍​‌‌​​​​‌​‌‌​​‌‌​​‌‌​​‌‌​​‌‌​​‌​​​​‌‌​​​​​‌‌​​‌‌​​‌‌​​‌​‌​‌‌​​‌​‌‍

That failure mattered: when obvious container and metadata paths go nowhere, the next question is whether the audio itself carries the message in its waveform rather than in file structure. In this challenge, the important clue was that the track did not behave like meaningful music, but like noise with intermittent structured bursts.

Why Morse-in-noise was suspected

After focusing on the signal itself, the audio showed pulse-like activity hidden under broadband noise. Once cleaned, those pulses were not random: they formed short and long beeps with separations that matched Morse timing much better than speech, music, or arbitrary modulation. ‍​‌‌​​​​‌​‌‌​​‌‌​​‌‌​​‌‌​​‌‌​​‌​​​​‌‌​​​​​‌‌​​‌‌​​‌‌​​‌​‌​‌‌​​‌​‌‍

Another useful clue was that the recovered signal centered around a fairly stable tone near 563 Hz. That kind of narrow, repeated tone is exactly the sort of carrier many online Morse decoders can handle after denoising.

Solution

  1. Open earth.wav in Audacity.
  2. Find a segment that contains only background noise.
  3. Use Effect → Noise Reduction / Suppression and capture a noise profile from that clean-noise region.
  4. Apply noise reduction to the entire track.
  5. Inspect the cleaned waveform and keep only the region that actually contains the pulsed signal.
  6. Trim or crop the rest so the decoder sees only the useful part.
  7. Export or replay the cleaned segment and feed it to an online Morse decoder.
  8. Tune the decoder if needed. The reference settings were approximately:
    • frequency: 563 Hz
    • volume threshold: 160
  9. After slight cleanup and parameter adjustment, the decoder output becomes: ‍​‌‌​​​​‌​‌‌​​‌‌​​‌‌​​‌‌​​‌‌​​‌​​​​‌‌​​​​​‌‌​​‌‌​​‌‌​​‌​‌​‌‌​​‌​‌‍
text
IT1SV3RYS4D
  1. Wrap the decoded text in the required flag format:
text
CODEBY{REDACTED}

Solve script

This challenge was solved primarily through manual audio cleanup in Audacity. The small helper below reproduces the final flag construction from the decoded Morse text.

python
#!/usr/bin/env python3

decoded = "IT1SV3RYS4D"
flag = f"CODEBY{{{decoded}}}"
print(flag)

‍​‌‌​​​​‌​‌‌​​‌‌​​‌‌​​‌‌​​‌‌​​‌​​​​‌‌​​​​​‌‌​​‌‌​​‌‌​​‌​‌​‌‌​​‌​‌‍