// nearest-city lookup against ~120 major world cities via the haversine formula — not a full reverse-geocoder, but enough to place a coordinate dropped in a CTF challenge or a photo's EXIF data
stego --lsb · drop a PNGNO FILE
LSB hex dump
Strings ≥ 4
// try each channel — a real payload usually only lives in one, and only the first N bits before it runs into image noise
qr --decode · drop an imageNO FILE
—
// finder-pattern detection, perspective correction and Reed-Solomon error correction — all client-side
stage 03 · decode— feed extracted blobs through every codec, then escalate: single shift → single byte → repeating key → full substitution
magic --decode · run every codecREADY
// click any decoded result to run it back through magic — chain multiple layers (base64 → rot13 → …)
// classic single-byte XOR break — frequency-scored, top matches first · best result can feed magic for double-encoded data
caesar --interactiveROT-N
+3
vigenere --crack · IC + chi-squaredREADY
—
// index of coincidence ranks candidate key lengths; each is then broken column-by-column with chi-squared English scoring — approximate on short or skewed text
freq --analyze · substitution solverREADY
—
// quick-guess maps observed letters onto English frequency order (ETAOIN…) as a starting point — refine it by hand
stage 04 · crypto & identity— hash it, name it, audit it · break a toy key, read a token, pin its timestamps
sha256 --avalancheWEB CRYPTO
// edit one character — watch ~half the bits flip
hashid --identify—
// identified by length & charset — candidates, not certainty
passwd --audit · offline100 GH/s
a–zA–Z0–9#!?
// awaiting input
Entropy
0 bits
Charset pool
0 symbols
Offline crack time
—
// runs 100% in-browser — nothing leaves this page
rsa --toy · small-n textbook RSAREADY
// Pollard's rho + Miller-Rabin, entirely client-side — only tractable because this n is deliberately small; that's the whole point of RSA key sizes
jwt --decode · no verify—
Header
—
Payload
—
// signature is never verified — decode only
date --epoch · timestamp converter—
// edit either field — the other updates live; useful for correlating JWT iat/exp and log timestamps
uuid --inspect · decode identifiers—
// version & variant read from the bitfields; v1/v6 unwind the 100-ns Gregorian clock, v7 & ULID the millisecond Unix clock — all local
stage 05 · synthesize— every stdout above pipes in here: hunt flags, grep the streams, diff what changed
flaghunter --scan · find any flagREADY
// scans for word{...} shapes — known CTF platform prefixes (flag, CTF, HTB, THM, picoCTF…) get a High-confidence badge
grep --pattern · search any textIDLE
// nothing runs until you enter a pattern — matches highlighted, -n line numbers, all client-side
diff --compare · spot what changedSAME
// line-based diff — paste two versions of anything (a patched binary's strings, two config dumps, before/after a decode) and see exactly what moved
entropy --shannon · measure randomness—
// awaiting input
// Shannon entropy over UTF-8 bytes (0–8 bits/byte) — high, flat entropy is the fingerprint of encryption, compression, or a random key; English prose sits near 4