Security measurement / reproducible data

What a decoy can tell us

On August 10, 2026, one session requested 102 credential paths from our n8n decoy. The public dataset records those requests and the decoy's response coverage.

The contribution

An instrumented decoy, deterministic extraction, a published request sequence, and controls that keep the observation separate from its interpretation. The dataset supports a narrow statement about one captured session.

Inspect the observation

Download the CSV or the JSON. The CSV distinguishes observed paths from the publication-only canary. Count only observed rows:

python3 -c "import csv; rows=list(csv.DictReader(open('loot.csv'))); print(sum(r['role']=='observed' for r in rows))"
# Expected: 102

The live watch overlay is separate from the frozen request list. The JSON's source checksum identifies that frozen source, not every byte of the changing API response.

Keep these distinctions

Collection coverage

Monthly releases preserve aggregate requests and dated census snapshots. New exports state which calendar days have records. They report sensor uptime, historical configuration changes, and exclusion counts as unknown where the input does not establish them. A day without records can mean silence or a collection gap.

Changing the decoy changes the instrument. Compare capture-time behavior with capture-time behavior; label later replays separately. Operator tests and crawlers need explicit exclusion rules before any count is described as attacker activity.

Inspect the dataset / See the current observations / Back to projects