fuzzing-dictionary

Generate domain-specific token dictionaries to guide fuzzers through parsers and protocol handlers.

Updated Mar 22, 2026
One-click install
npx skills add https://github.com/TECH-HY/SKILLS --skill fuzzing-dictionary-tech-hy
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: fuzzing-dictionary
Source: https://github.com/TECH-HY/SKILLS/tree/main/skills/fuzzing-dictionary
Command: npx skills add https://github.com/TECH-HY/SKILLS --skill fuzzing-dictionary-tech-hy

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Blind mutation fuzzing often stalls at early validation checks because random inputs rarely contain the keywords, magic bytes, or protocol tokens a target expects. This Skill teaches how to build fuzzing dictionaries that inject meaningful tokens, helping fuzzers reach deeper code paths in parsers, protocol handlers, and file format processors. ## Core Features & Use Cases - Dictionary Creation: Write dictionary files with quoted strings, key-value pairs, and hex escapes (e.g., "\xF7\xF8") compatible with libFuzzer, AFL++, and cargo-fuzz. - Multiple Generation Methods: Extract tokens from header files, man pages, binary strings, or LLM prompts, plus AFL++ auto-dictionary generation via AFL_LLVM_DICT2FILE. - Tool Integration: Pass dictionaries via -dict= for libFuzzer/cargo-fuzz or -x for AFL++, with troubleshooting guidance for common failures. - Use Case: When fuzzing a PNG parser, generate a dictionary containing the PNG magic bytes and chunk types (IHDR, PLTE, IDAT, IEND) so the fuzzer bypasses header validation and mutates deeper parsing logic. ## Quick Start Ask the AI to create a fuzzing dictionary for your target format, such as a PNG parser, including magic bytes, chunk types, and hex-escaped binary values.

Frequently Asked Questions about fuzzing-dictionary

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a fuzzing dictionary for libFuzzer?

Create a text file with one quoted string per line, such as kw1="blah" or "\xF7\xF8" for binary bytes. Pass it to the fuzzer with ./fuzz -dict=./dictionary.dict corpus/ and tokens will be inserted during mutations.

How do I use a dictionary with AFL++ fuzzing?

Pass the dictionary file with the -x flag: afl-fuzz -x ./dictionary.dict -i in -o out -- ./target. AFL++ supports multiple -x flags, and afl-clang-lto can auto-generate dictionaries via the AFL_LLVM_DICT2FILE environment variable.

What is the difference between a fuzzing dictionary and a corpus?

A corpus provides complete seed inputs that establish structure, while a dictionary provides individual tokens the fuzzer splices into mutations. They complement each other: corpus gives valid skeletons, dictionary supplies keywords to reach deeper logic.

Does go-fuzz support fuzzing dictionaries?

go-fuzz has no built-in dictionary flag. Instead, convert dictionary entries into corpus seed files by writing each token as an individual file in the corpus directory before running go-fuzz.

Why is my fuzzing dictionary not improving coverage?

Coverage stalls when dictionary tokens do not match the target's actual keywords, entries exceed -max_len, or the dictionary is too large. Analyze the target source for real keywords and prune to 50-200 relevant entries.

How many entries should a fuzzing dictionary contain?

Keep dictionaries focused at roughly 50-200 entries. Oversized dictionaries slow the fuzzer and dilute useful tokens, while too few entries limit mutation diversity. Deduplicate with sort -u and document sections with comments.