Recipe builder: chain decodes and transforms
Build a repeatable chain of operations - decode, decompress, XOR, decrypt - see the output after every step, and share the whole thing as a link.
Open in ctfpalMost challenges are not one transformation, they are four. Base64 that gunzips to hex that XORs to the flag; a URL-encoded JSON field holding a base32 blob; a .txt of decimal bytes that turn out to be a PNG. Doing that by hand means copying an intermediate result between four panels and losing track of which one you were on.
What a recipe is
An ordered list of operations, each with its own parameters, applied to the input in sequence. The output of every step is shown, not just the last one - which is the difference between a pipeline and a black box, and it is where you notice that step three produced 40 bytes of gzip rather than the text you expected.
- Operations are typed. An op that needs bytes gets bytes; an op that needs text gets text, with the encoding stated rather than assumed. That is why a chain that ends in a UTF-16 string does not come out as mojibake.
- Parameters are bounded. A shift, a block size, a key length - each declares its own range, so a spinner cannot be dragged into a value the op cannot use. The exceptions are documented: a Caesar shift of 30 is legitimate over a modular domain and is not clamped to 25.
- Every step is reversible where the operation is. Encode and decode are separate ops, so a recipe reads in the direction it runs.
When to use the search instead
If you do not yet know what the chain is, the automatic decode search is the faster route: it tries thousands of chains and ranks the outputs by how much they look like something. The recipe builder is for when you know - or once the search has told you - and you want it repeatable, shareable and adjustable a parameter at a time.
The two are the same operations underneath. A chain the search found can be opened as a recipe and edited, which is usually how a nearly-right answer becomes a right one.
Sharing one
A recipe is a list of operation ids and parameters, and the ids are a frozen interface - they do not get renamed, because a link somebody pasted into a writeup two years ago should still open. That is what makes a recipe a durable way to explain a solution rather than a screenshot of one.