Day 3 Puzzle - Solution
Summary
The puzzle consists of a 15-line file rdm.txt
containing:
- Hint text:
1 cd 2 rl th wrld - Hex string mapping figlet glyph symbols 3-8. 6 lines of encoded ASCII art (each char encodes a figlet glyph)
- Empty line
- Hint text:
nx2nx cn b prtty gd11-15. UUencoded data (XZ compressed, GPG encrypted)
The task was to decode the figlet art to recover the GPG passphrase, then decrypt the payload.
Solution
1. Decode the figlet art (lines 3-8)
- Time: ~30 seconds (initial exploration)
- Line 2 gives hex:
2028292C2E2F3C5C5F607Cwhich maps to symbols: space, (, ), comma, dot, /, <, backslash, underscore, backtick, |. These form the glyph set used in the art. - Lines 3-8 use letters
a-kto encode each symbol position. Decoding gives 6 rows of symbol art. When permuted to figlet row order[5,3,0,4,1,2], the result is:
_ ____ __ _ _
__ _| | ___| _ \ / /__ _| || |_
/ _` | |/ _ \ |_) | / / _ \_ .. _|
| (_| |_| __/ _ < / / __/_ _|
\__,_(_)\___|_| \_\/_/ \___| |_||_|
2. Identify the figlet text (passphrase)
- Time: ~15-20 minutes of automated searching + hints
- Initial attempts (brute force permutations, dictionary words, leetspeak variants, smush mode scans, all fonts): no exact match found. This consumed most of the search time (10-15 min).
- Key observations from manual inspection: starts with
ashape,!shape,eshape (so “a!e…”), ends with#shape. - With user hints narrowing to: 7 chars total, starts
a!eR, ends#. Searched all pairs for positions 4-5 across fonts/modes. - Found the exact 7-char string:
a!eR/e#(tested viafiglet -f standard 'a!eR/e#'which renders to match the target art). - Passphrase:
a!eR/e#
3. Decrypt the payload (lines 11-15)
- Time: ~5 seconds
- Lines 11-15 are UUencoded. Decoding gives XZ compressed
data, which decompresses to a 139-byte GPG AES256 symmetrically
encrypted blob (
/tmp/opencode/out.raw). - Decrypting with passphrase
a!eR/e#yields:
well done p1 complete
instructions for p2 would go here
Key Breakthroughs & Timeline
| Time | Event |
|---|---|
| ~0:00 | Identified symbol mapping from hex, decoded art rows, found
correct row permutation [5,3,0,4,1,2]. |
| ~0:01-0:05 | Built Python figlet simulator (figsim.py) and
validated against system figlet - confirmed 1:1
match for standard font cases. |
| ~0:05-0:15 | Exhaustive searches: all 720 row permutations × dictionary words × case variants; tried kerning, different smush modes, all installed height-6 fonts. No matches found (this was the longest automated phase). |
| ~0:15 | User provided hint: “The text represented by the figlet is the GPG passphrase… contains uppercase/lowercase and some ascii symbols” |
| ~0:16 | User provided hint: “The figlet starts with”a!e” and ends with “#” the 4th character is “R”” |
| ~0:17 | User provided hint: “there are 7 characters in the figlet… first 4 are”a!eR” and last is “#”. Find the remaining two characters” |
| ~0:17-0:18 | Brute-forced all pairs for middle 2 chars across
fonts/modes; found a!eR/e# matches when rendered in
standard figlet. |
| ~0:18 | Decrypted GPG blob with a!eR/e# → success.
Result: “well done p1 complete / instructions for p2 would go
here” |
Files
/home/ehdee/dev/puzzle-blog/day3/oneshot/rdm.txt- puzzle input/tmp/opencode/out.raw- decrypted GPG blob (139 bytes)/tmp/opencode/figsim.py- validated figlet simulator
Result
Passphrase: a!eR/e#
Decrypted: “well done p1 complete\ninstructions for p2 would go
here”