Frequency 3000
Frequency 3000
Platform: dawgctf_26 | Category: Misc | Type: Challenge | Difficulty: Easy | OS: NA | Author: XESXOR | Date: 2026-04-07 | Status: Solved Techniques: hex_decode, character_frequency_mapping, clue_guided_reconstruction
Summary
Task: a hex-encoded file decodes to integer frequencies wrapped in a DawgCTF flag template, with a clue pointing to Futurama's pilot transcript. Solution: decode the numbers, count characters in the raw transcript, and use the Futurama hint to reconstruct the obvious phrase 'REDACTED'.
Frequency 3000 — DawgCTF '26
Description
One of my favorite TV shows of all time has to be Futurama. I decided to hide a message that can be solved by frequenting its pilot episode. Good luck and remember to drink lots of Slurm, 'it's highly addictive!'
English summary: the challenge ships a transcript for Futurama's pilot episode, Space Pilot 3000, plus a flag.txt file containing hex bytes. The goal is to decode the hex, interpret the resulting numbers as frequency values, and recover the hidden message from the transcript.
Analysis
The first useful step is to inspect flag.txt. It is not plaintext, but a list of hexadecimal byte values. Decoding those bytes produces:
text read-only • copy allowedDawgCTF{ 390 1002 580 1314 191 1589 33 1526 141 762 352 88 1293 379 50 }
So the inner payload is a sequence of integers, not the flag itself.
The prompt makes the intended direction very clear:
- "Futurama"
- "pilot episode"
- "frequenting"
Those clues point directly to the supplied Space Pilot 3000 Transcript.txt file and to frequency analysis. The natural interpretation is that each number corresponds to the frequency of a character in the transcript.
Using the raw transcript text as provided, counting character occurrences gives several exact matches immediately:
390 -> W1002 -> H580 -> Y191 -> 01589 -> T33 -> Z141 -> !762 -> D352 -> B88 -> 350 -> ?
The remaining values are near-matches rather than perfect matches. That can happen if the transcript version or normalization differs slightly, for example due to spacing, punctuation, line ending, or formatting differences. Even so, the partial decode plus the Futurama theme makes the intended phrase obvious:
text read-only • copy allowedREDACTED
This is a leetspeak and punctuation variant of "Why not Zoidberg?", which fits the challenge theme perfectly.
Solution
- Read
flag.txtand notice it contains hexadecimal bytes. - Decode the hex into ASCII.
- Extract the integer sequence from inside the
DawgCTF{...}wrapper. - Count character frequencies in
Space Pilot 3000 Transcript.txtwhile preserving the raw text context. - Match the decoded integers to transcript character counts.
- Use the strong partial mapping and the Futurama clue to resolve the near-matching characters.
- Rebuild the final flag string.
Hex-decoding snippet:
python read-only • copy allowed#!/usr/bin/env python3 from pathlib import Path hex_bytes = Path("flag.txt").read_text(encoding="utf-8").split() decoded = bytes(int(b, 16) for b in hex_bytes).decode() print(decoded)
One possible frequency-counting snippet:
python read-only • copy allowed#!/usr/bin/env python3 import re from collections import Counter from pathlib import Path decoded = "DawgCTF{ 390 1002 580 1314 191 1589 33 1526 141 762 352 88 1293 379 50 }" nums = list(map(int, re.findall(r"\d+", decoded))) text = Path("Space Pilot 3000 Transcript.txt").read_text(encoding="utf-8") counts = Counter(text) for n in nums: matches = [repr(ch) for ch, cnt in counts.items() if abs(cnt - n) <= 2] print(n, matches[:12])
That output is enough to see the exact hits and the small set of near-hits. Combined with the episode clue, the intended plaintext is unmistakable:
text read-only • copy allowedREDACTED
Therefore the final flag is:
text read-only • copy allowedDawgCTF{REDACTED}