zwesty
Write-ups / Day 21 / Warmups
Day 21 · Wed, Oct 21 · Warmups

Under Pressure

Prey slaughtered

Base64, gzip magic bytes, reusing a compounding solver unchanged

STTMClaude Homebase Both

Flags are shortened to their first 8 and last 4 characters because they're unique per team.

Challenge ID
warmups-day-21 (+ /time_trial, /mastery)
Solved
2026-10-21: all three modes CORRECT on the first submit, by 09:02:33 ET, 17 s after the solver's first start request (09:02:16 ET). Both timed modes were ranked runs. Late start: the scheduled 08:58 run didn't start because a leftover session on our Kali VM was still blocking it, and a catch-up run began at 09:01:40, about 3 min 39 s late. So the 2 min 33 s from the 9 AM release to the Mastery CORRECT includes that delay (on Day 20 this lane was done by 09:00:39)
Player
Zwesty (solo); solved by our automated morning solver (a scheduled script on our Kali VM), built with Claude Code (Opus 5.5) and started here by the catch-up run, with no manual work needed

The challenge

"A familiar wrapper. Something compressed inside."

answer_id Question Format
message "Decode the assigned blob completely. What exact answer slug does its final non-empty decoded line instruct you to submit?" pattern: "three lowercase words separated by hyphens, followed by a hyphen and a two-digit number; submit the slug only"; trimmed

Mastery asked the same question once per blob (set1.message … set103.message).

Reading the prompt: what it said we'd need

Clue What it pointed to What I did about it
"A familiar wrapper" An encoding seen on earlier days. The blob is Base64 Nothing new: Base64 has been in the chain since Day 1
"Something compressed inside" A compression layer under the wrapper. The Base64 starts H4sI, which decodes to 1f 8b 08, the gzip magic The chain already tries zlib, gzip, bz2, xz, and raw deflate under Base64, hex, and the rest (pre-built for Day 15)
"Under Pressure" (title) Compression Confirmed the reading
"Decode the assigned blob completely" The usual instruction sentence Day 19's whole chain (and through it Days 1 to 18) ran on every blob

What was in the files

  • Single Solve: blob.txt, 152 bytes: one line of Base64 starting H4sIAAAAAAAC…. It decodes to 113 bytes of gzip, which decompress to the usual sentence: "Nice work decoding this warmup! To solve, submit this exact answer to the Game Master: eager-compass-mosaic-50".
  • Time Trial: blob.txt, 152 bytes, the same template with a different slug (hearty-island-clover-89).
  • Mastery: one zip of 103 blobs (blob-01.txt … blob-103.txt, 502 to 525 bytes). Each has 21 labelled lines (NN<TAB>…) in the history pattern of the earlier days (Base64, ROT13, hex, binary, Morse, Bacon, …). Line 19 is UTF-16LE hex, line 20 UTF-16BE hex, and line 21 Base64 gzip (H4sI…, today's layer). For example, line 21 of blob-01.txt decompresses to the fragment pal-49.

So the timed variants used the same template with different values, and the Mastery added today's layer as one more line.

Single Solve

The solver solved it with no stop, still using the Day 19 Warmups solver, unchanged since Day 19. The gzip reading wasn't new: it was pre-built for Day 15 (2026-10-14: zlib, gzip, bz2, xz, lzma, and raw deflate under Base64, hex, and the rest, detected by magic bytes, with a bounded output and printable text only) and carried into the Day 16 version, whose decoders the later days still load. No new solver, tests, or rehearsal were written today.

started_at  2026-10-21T13:02:17.185Z
deadline    none (Single Solve)
answers     1   eager-compass-mosaic-50
start        443 ms
artifact    1124 ms
solve         10 ms
submit      1250 ms
TOTAL       2827 ms   (submit +2.47 s after started_at)
result      CORRECT   flag 291657c1…f40e

The artifact download (1.1 s) was the slowest step; the decode took 10 ms. Unlike Day 20, the reply's solved_by named Zwesty.

Time Trial

CORRECT on the first attempt, ranked. The start reply showed unique_attempts_remaining: 255.

started_at  2026-10-21T13:02:24.992Z
deadline    2026-10-21T13:02:54.992Z   (30 s)
answers     1   hearty-island-clover-89
start        331 ms
artifact     284 ms
solve         10 ms
submit      1143 ms
TOTAL       1768 ms   (submit +1.53 s after started_at)
result      CORRECT   flag c9136f47…634b

Mastery

CORRECT on the first attempt, ranked (103 sets, 120 s clock).

started_at  2026-10-21T13:02:31.811Z
deadline    2026-10-21T13:04:31.811Z   (120 s)
answers     103
start        286 ms
artifact     236 ms
solve        296 ms
submit       637 ms
TOTAL       1455 ms   (submit +1.26 s after started_at)
result      CORRECT   flag b4d9c387…b4df

Time to solve

All three modes were solved by 09:02:33 ET, 17 s after the solver's first start request at 09:02:16 ET, and each went through on the first submit; both timed modes were ranked. The finish, 2 min 33 s after release, was set by the late start: the catch-up run began at 09:01:40 instead of 08:58 and handled the Metadata lane first.

Takeaways

  • The Day 15 guesses keep paying. The compression layer was built a week early as a speculative layer; today it was the whole puzzle and cost nothing.
  • Know the magic in its wrapped form. H4sI (gzip under Base64) is worth recognising by eye, as is eJ for zlib.
  • The lane time is now mostly network. 103 blobs with 21 layers each decoded in 296 ms; the late start cost far more than the solve.