fuzzing-dictionary
Fuzzing dictionaries guide fuzzers with domain-specific tokens. Use when fuzzing parsers, protocols, or format-specific code.
Security Assessment
About fuzzing-dictionary
The fuzzing-dictionary skill helps improve fuzzing effectiveness by supplying domain-specific tokens that guide fuzzers toward meaningful and structurally valid inputs. Instead of relying entirely on random mutations, fuzzing dictionaries provide known keywords, protocol commands, magic bytes, and format-specific strings that help bypass early validation checks and trigger deeper execution paths. This technique is especially useful when fuzzing parsers, protocol handlers, and file format processors where valid structure or recognizable tokens are required before more complex logic is reached.
The skill supports creating and using dictionary files compatible with common fuzzing tools such as libFuzzer, AFL++, and cargo-fuzz. It explains how to define dictionary entries using quoted strings, key-value pairs, and hexadecimal escape sequences for binary data. The documentation also demonstrates multiple approaches for generating dictionary content, including extracting tokens from header files, binaries, command-line manuals, and large language models. Additional examples cover common patterns such as HTTP protocol keywords and file format magic bytes, making it easier to adapt dictionaries for different fuzzing targets.
This skill is designed for security researchers, fuzzing engineers, software testers, and developers working on parser-heavy or protocol-driven applications. It is particularly valuable for testing structured inputs such as JSON, XML, HTTP, DNS, media codecs, and archive formats. Teams performing coverage-guided fuzzing can use dictionaries to overcome stagnating coverage and improve code path exploration without requiring complex custom mutators.
FAQ
What types of targets benefit most from fuzzing dictionaries?
Fuzzing dictionaries are most effective for parsers, protocol implementations, and file format handlers that expect specific keywords, headers, commands, or magic values before processing deeper logic.
Which fuzzers are compatible with dictionary files?
The documented dictionary format works with libFuzzer, AFL++, and cargo-fuzz using their respective dictionary command-line options.
How can dictionary entries be generated automatically?
Dictionary content can be extracted from header files, binary strings, command-line manuals, or generated with large language models using prompts tailored to the target format or protocol.
Can binary or non-printable values be included in a dictionary?
Yes. Hex escape sequences such as "\xF7\xF8" can be used to represent binary or non-printable byte values inside dictionary entries.
When should this technique be avoided?
This technique is less useful when fuzzing pure algorithms or targets that do not rely on keyword-based parsing or structured input validation.
Install fuzzing-dictionary
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
trailofbits/skills