fuzzing-dictionary
Fuzzing dictionaries guide fuzzers with domain-specific tokens. Use when fuzzing parsers, protocols, or format-specific code.
npx skills add trailofbits/skills --skill fuzzing-dictionary --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# Fuzzing Dictionary A fuzzing dictionary provides domain-specific tokens to guide the fuzzer toward interesting inputs. Instead of purely random mutations, the fuzzer incorporates known keywords, magic numbers, protocol commands, and format-specific strings that are more likely to reach deeper code paths in parsers, protocol handlers, and file format processors. ## Overview Dictionaries are text files containing quoted strings that represent meaningful tokens for your target. They help fuzzers bypass early validation checks and explore code paths that would be difficult to reach through blind mutation alone. ### Key Concepts | Concept | Description | |---------|-------------| | **Dictionary Entry** | A quoted string (e.g., `"keyword"`) or key-value pair (e.g., `kw="value"`) | | **Hex Escapes** | Byte sequences like `"\xF7\xF8"` for non-printable characters | | **Token Injection** | Fuzzer inserts dictionary entries into generated inputs | | **Cross-Fuzzer Format** | Dictionary files work with libFuzzer, AFL++, and cargo-fuzz | ## When to Apply **Apply this technique when:** - Fuzzing parsers (JSON, XML, config files) - Fuzzing protocol implementations (HTTP, DNS, custom protocols)
- Overview
- Key Concepts
- When to Apply
- Quick Reference
- Step-by-Step
- Step 1: Create Dictionary File
- Step 2: Generate Dictionary Content
- Step 3: Pass Dictionary to Fuzzer
- Common Patterns
- Pattern: Protocol Keywords
- Pattern: Magic Bytes and File Format Headers
- Pattern: Configuration File Keywords
- Advanced Usage
- Tips and Tricks
grep -o '".*"' header.h > header.dict man curl | grep -oP '^\s*(--|-)\K\S+' | sed 's/[,.]$//' | sed 's/^/"&/; s/$/&"/' | sort -u > man.dict strings ./binary | sed 's/^/"&/; s/$/&"/' > strings.dict export AFL_LLVM_DICT2FILE=auto.dict Dictionary saved to auto.dict afl-fuzz -x auto.dict -i in -o out -- ./target afl-fuzz -x keywords.dict -x formats.dict -i in -o out -- ./target afl-fuzz -x ./dictionary.dict -i input/ -o output/ -- ./target @@ cargo fuzz run fuzz_target -- -dict=./dictionary.dict Convert dictionary to corpus files
What does the fuzzing-dictionary skill do?
Fuzzing dictionaries guide fuzzers with domain-specific tokens. Use when fuzzing parsers, protocols, or format-specific code.
How do I install it?
Run `npx skills add trailofbits/skills --skill fuzzing-dictionary --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From trailofbits/skills, a repository with 6,426 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
