用于 Web 模糊测试的字典:精选的 micro,分类的 short/long,以及合成的最终列表。
onelistforallmicro.txt:精选列表(手动维护)。dict/<category>_short.txt:按类别精选的字典(小型/高质量来源)。dict/<category>_long.txt:按类别综合的字典(所有来源)。onelistforall.txt:micro + 所有 *_short.txt,去重后。onelistforall_big.txt:所有内容合并,去重后。update):克隆约 36 个字典仓库到 sources/。classify):遍历 sources/ 中的每个 .txt 文件,根据路径结构、文件名关键词和内容采样将其分类到各个类别中。生成 classification_index.json。build --all-categories):对于每个类别,将分类后的源文件合并到 dict/{cat}_short.txt 和 dict/{cat}_long.txt,并进行过滤和去重。assemble):将 micro 和所有 short 文件合并为 onelistforall.txt,将所有内容合并为 onelistforall_big.txt。package):创建带校验和的 7z 归档。git(用于 update)7z(仅用于 package)olfa)# 检查依赖
go run ./cmd/olfa check
# 列出源和类别
go run ./cmd/olfa list
go run ./cmd/olfa list --categories
# 同步源仓库
go run ./cmd/olfa update
go run ./cmd/olfa update --source SecLists
# 分类源文件
go run ./cmd/olfa classify
go run ./cmd/olfa classify --format json
# 构建所有类别字典
go run ./cmd/olfa build --all-categories
go run ./cmd/olfa build --category wordpress --variant short
# 组装最终合并列表
go run ./cmd/olfa assemble
# 验证和打包
go run ./cmd/olfa validate-categories
go run ./cmd/olfa stats
go run ./cmd/olfa package
# 完整流水线(一步完成所有步骤)
go run ./cmd/olfa pipeline
go run ./cmd/olfa pipeline --dry-run
go run ./cmd/olfa pipeline --skip-publish # 跳过 git commit+push
go run ./cmd/olfa pipeline --skip-update # 跳过 git fetch
go run ./cmd/olfa pipeline --commit-msg "my custom message"
# 选项 A:单个命令
go run ./cmd/olfa pipeline
# 选项 B:逐步执行
go run ./cmd/olfa check
go run ./cmd/olfa update
go run ./cmd/olfa classify
go run ./cmd/olfa build --all-categories
go run ./cmd/olfa assemble
go run ./cmd/olfa validate-categories
go run ./cmd/olfa package
git add dict/ && git commit -m "chore: update dict/ wordlists" && git push
该仓库包含 dict/ 下约 418 个类别字典(约 930 MB)。但是,有 6 个文件超出了 GitHub 的 100 MB 文件大小限制,因此不包含在仓库中:
要在本地生成它们,请运行:
go run ./cmd/olfa pipeline
运行完整流水线(同步源 + 构建所有类别)需要约 15 GB 的磁盘空间。
所有内容由两个文件控制:
configs/pipeline.yml — 源、过滤器、分类规则、去重设置、发布配置。configs/taxonomy.json — 类别分类法(236 个类别及其别名)。编辑 configs/pipeline.yml,向 sources 数组添加一个条目:
{
"name": "my-wordlists",
"repo": "username/repo-name",
"branch": "main",
"paths": ["all"],
"tags": ["directories", "api"],
"priority": "medium"
}
添加源后,运行流水线以拉取并分类:
go run ./cmd/olfa pipeline
或者仅同步新源:
go run ./cmd/olfa update --source my-wordlists
pipeline.yml 中的全局过滤器控制保留或丢弃的行:
regex_denylist — 匹配任何模式的行将被移除(例如 URL、UUID、图片扩展名)max_line_len — 超过此行数的行被丢弃(默认:100 字符)trim — 去除首尾空白drop_empty — 移除空行可以在 category_filters 中设置按类别的过滤器(例如,子域只允许有效主机名字符)。
每个类别生成两个字典:
*_short.txt — 仅来自 high 优先级源,或少于 5000 行的文件,或文件名包含 common、short、top、default 等关键词的文件。*_long.txt — 所有源合并。阈值和关键词在 classification.short_line_threshold、classification.short_keywords 和 classification.long_keywords 中可配置。
类别在 configs/taxonomy.json 中定义。每个类别有一个规范名称和别名。源文件通过以下方式匹配到类别:
Discovery/DNS/* → subdomains)要列出所有可用类别:
go run ./cmd/olfa list --categories
go run ./cmd/olfa list --categories --format json
publish):自动提交 dict/ 的更改并推送到远程。| 文件 | 大小 |
|---|
dict/subdomains_long.txt | 493 MB |
dict/passwords_long.txt | 351 MB |
dict/passwords_short.txt | 296 MB |
dict/fuzz_general_long.txt | 178 MB |
dict/directories_long.txt | 153 MB |
dict/dns_long.txt | 112 MB |
| 字段 | 描述 |
|---|
name | 源的唯一标识符 |
repo | GitHub owner/repo(通过 https://github.com/... 克隆) |
branch | 要跟踪的分支 |
paths | 仓库内要扫描的目录(["all"] = 全部) |
tags | 当自动分类无法确定类别时的备用类别 |
priority | high、medium 或 low — 高优先级源放入 *_short.txt,所有源放入 *_long.txt |