zwesty
Write-ups / Day 20 / Warmups
Day 20 · Tue, Oct 20 · Warmups

Big Entrance

Prey slaughtered

UTF-16 big-endian under hex, byte-order marks, 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-20 (+ /time_trial, /mastery)
Solved
2026-10-20: all three modes CORRECT on the first submit, by 09:00:39 ET, 17 s after our solver's first start request (09:00:22 ET). Both timed modes were ranked runs
Player
Zwesty (solo); solved by our automated morning solver (a scheduled script on our Kali VM), built with Claude Code (Opus 5.5), with no manual work needed

The challenge

"Same bar. This time the big one goes first."

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 … set98.message).

Reading the prompt: what it said we'd need

Clue What it pointed to What I did about it
"Same bar" A callback to Day 19's "Two bytes walk into a bar. The little one goes first." Expected a sibling of Day 19's UTF-16LE layer, so the Day 19 solver was the right starting point
"the big one goes first" Big-endian: the high byte of each UTF-16 unit comes first, so the BOM is fe ff and every ASCII byte is preceded by 00 Nothing new to build: Day 19's utf16-text reading already accepted both BOMs. The solver used it as is
"Decode the assigned blob completely" The usual instruction sentence, possibly under other layers 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, 440 bytes: one line of hex starting feff004e00690063…, which is the BOM and then "Nic…" in UTF-16BE. Decoded, it is the usual sentence: "Nice work decoding this warmup! To solve, submit this exact answer to the Game Master: deft-blanket-clover-43".
  • Time Trial: blob.txt, 440 bytes, the same template with a different slug (peppy-canyon-wizard-22).
  • Mastery: one zip of 98 blobs (blob-01.txt … blob-98.txt, 482 to 511 bytes). Each has 20 labelled lines (NN<TAB>…) in the history pattern of the earlier days (Base64, ROT13, hex, binary, …). Line 19 is always UTF-16LE hex (fffe…, Day 19's layer) and line 20 is always UTF-16BE hex (feff…, today's). For example, line 20 of blob-01.txt decodes to the fragment per-98.

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. That solver added one reading on Day 19: any raw-bytes reading of the text (hex, Base64, Base32, …) that is UTF-16 with BOM ff fe or fe ff (or with every high byte zero) and decodes to printable text. Its tests already covered a big-endian sample, so today's blob decoded first time. No new solver, tests, or rehearsal were written today.

started_at  2026-10-20T13:00:22.940Z
deadline    none (Single Solve)
answers     1   deft-blanket-clover-43
start        383 ms
artifact     458 ms
solve         17 ms
submit      1777 ms
TOTAL       2635 ms   (submit +2.35 s after started_at)
result      CORRECT   flag 0e1e279a…71bd

The reply's solved_by named "(unknown)" with a note that the player's name was unavailable. Both timed replies named Zwesty, so this looks like a display gap on Huntress's side, not a scoring problem.

Time Trial

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

started_at  2026-10-20T13:00:30.736Z
deadline    2026-10-20T13:01:00.736Z   (30 s)
answers     1   peppy-canyon-wizard-22
start        448 ms
artifact     454 ms
solve         19 ms
submit       844 ms
TOTAL       1764 ms   (submit +1.42 s after started_at)
result      CORRECT   flag 521548ac…6a88

Mastery

CORRECT on the first attempt, ranked (98 sets, 115 s clock).

started_at  2026-10-20T13:00:37.634Z
deadline    2026-10-20T13:02:32.634Z   (115 s)
answers     98
start        497 ms
artifact     436 ms
solve        313 ms
submit      1167 ms
TOTAL       2413 ms   (submit +2.04 s after started_at)
result      CORRECT   flag 99e699e2…8d94

Time to solve

All three modes were solved by 09:00:39 ET, 17 s after the solver's first start request at 09:00:22 ET. Each went through on the first submit, and both timed modes were ranked.

Takeaways

  • Build the pair, not just the half. Day 19's UTF-16 reading accepted both byte orders from the start, so the "big one" day cost nothing.
  • A compounding solver is worth testing on the obvious next step. The big-endian test written on Day 19 is the reason the solver could finish this lane alone in 17 seconds.
  • History lines keep growing. The Mastery blobs now have 20 lines, one per layer added so far; solve time stayed at 313 ms for 98 blobs.