The challenge
Sixteen little symbols are calling. Dot dot dot.
One question per blob: "Decode the assigned blob completely. What exact answer slug does its final non-empty decoded line instruct you to submit?" Format: three lowercase words and a two-digit number, joined by hyphens (word-word-word-NN).
Reading the prompt: what it said we'd need
| Clue | What it pointed to | What I did about it |
|---|---|---|
| "Sixteen little symbols" | Hexadecimal: 16 digits, 0–9 and a–f | Expected hex under the new layer |
| "Dot dot dot" | Morse code (and a nod to "dot com") | The pre-built solver already had a Morse decoder |
| "calling" | Telegraphy / signalling | Same: Morse |
What was in the files
- Single Solve and Time Trial: one
blob.txteach, a single long line of Morse. Decoded, the Morse letters are hex digits (-....= 6,.----= 1,.= e,..-.= f …), and the hex spells the usual sentence ending in the slug. - Mastery: one zip with 78
blob-NN.txtfiles. Each blob has 16 numbered lines. Line N uses Day N's layer (Base64, ROT13, hex, binary, decimal, octal, percent, HTML entities,\uescapes, Base32, base64url, reverse, Atbash, Caesar, ROT47), so line 16, the slug's tail, is in Morse-over-hex. For example, a line 16 of-.... .---- -.... --... -.... ..-. -.... . ..--- -.. ...-- ....- ...-- ....-reads61676f6e2d3434, which isagon-44.
Single Solve
Sent by our automated morning solver (a scheduled script on our Kali VM), using a solver we pre-built the night before with speculative layers including Morse. Its whole-blob search chained Morse and then hex by itself. Answer silly-banner-marble-88, solve 10 ms.
started_at 2026-10-16T13:00:49.544Z (untimed)
start 490 ms · artifact 469 ms · solve 10 ms · submit 977 ms · TOTAL 1946 ms
result CORRECT flag 8ca2f351…c957
Time Trial
Also the solver, ranked (255 unique attempts left). Same shape as the Single Solve.
start 638 ms · artifact 459 ms · solve 8 ms · submit 1486 ms · TOTAL 2593 ms
result CORRECT flag 84fc39ec…3faf
Mastery
First attempt (solver, ranked, 95 s clock): stopped, nothing submitted. Every set raised "no instruction line found". The solver reads a Mastery blob line by line and lets each line use one new decoder. On line 16 the Morse decoder's output was still hex text, not words, so no reading of the line fit the sentence. The stop was clean (no wrong answer went in), but the clock ran out.
Fix: a Morse (or Braille ASCII) reading made only of hex digits is also offered as the bytes it spells. That counts as one new layer for the line. Nothing else changed; the new solver loads the pre-built one and wraps that one function.
- Tests 6/6, including all 78 saved Mastery sets and 20 synthetic 16-line blobs.
- Regression rehearsal (with a new synthetic
morse-hexlayer): 65 saved attempts, slowest 0.41 s, 64 identical, 1 newly solved, 0 changed, synthetic 60/60. The rehearsal passed.
Retry (one untimed retry; unranked):
retry 2418 ms · artifact 519 ms · solve 249 ms · submit 1341 ms · TOTAL 4528 ms
78 answers
result CORRECT flag 4b23b17f…0672
Time to solve
All three modes were solved by 13:05:10 UTC (09:05:10 ET), 4 min 21 s after the first start. The Single Solve and the ranked Time Trial each went through in about 2 s; the ranked Mastery expired with nothing sent, and an untimed, unranked retry went through about three minutes later after the fix.
Takeaways
- A new layer can sit on top of an old one on the same line. Single-layer speculative decoders aren't enough when the day's layer is "old encoding, then new encoding". Rehearse stacked layers before the day, not only single ones.
- Clean stops paid off again. The solver refused to guess, so the expired attempt cost time, not a wrong answer.
- The pre-build won the untimed and Time Trial modes in seconds. Only the Mastery's line-by-line path missed.