
Курируемый, категоризированный генератор списков слов для веб-фаззинга, перечисления директорий и обнаружения поддоменов. Автоматически синхронизирует 36+ источников, классифицирует записи и создаёт оптимизированные короткие/длинные списки для тестирования на проникновение.
Словники для веб-фаззинга: курируемый 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): Обходит каждый .txt файл в sources/, классифицирует каждый по категориям, используя структуру пути, ключевые слова в именах файлов и семплирование содержимого. Создаёт classification_index.json.build --all-categories): Для каждой категории объединяет классифицированные файлы источников в dict/{cat}_short.txt и dict/{cat}_long.txt с фильтрацией и дедупликацией.assemble): Объединяет micro + все short'ы в onelistforall.txt и всё вместе в onelistforall_big.txt.package): Создаёт архивы 7z с контрольными суммами.publish): Автоматически коммитит изменения в dict/ и пушит в удалённый репозиторий.git (для update)7z (только для package)olfa)# Check dependencies
go run ./cmd/olfa check
# List sources and categories
go run ./cmd/olfa list
go run ./cmd/olfa list --categories
# Sync source repos
go run ./cmd/olfa update
go run ./cmd/olfa update --source SecLists
# Classify source files
go run ./cmd/olfa classify
go run ./cmd/olfa classify --format json
# Build all category wordlists
go run ./cmd/olfa build --all-categories
go run ./cmd/olfa build --category wordpress --variant short
# Assemble final combined lists
go run ./cmd/olfa assemble
# Validate and package
go run ./cmd/olfa validate-categories
go run ./cmd/olfa stats
go run ./cmd/olfa package
# Full pipeline (all steps in one command)
go run ./cmd/olfa pipeline
go run ./cmd/olfa pipeline --dry-run
go run ./cmd/olfa pipeline --skip-publish # skip git commit+push
go run ./cmd/olfa pipeline --skip-update # skip git fetch
go run ./cmd/olfa pipeline --commit-msg "my custom message"
# Option A: single command
go run ./cmd/olfa pipeline
# Option B: step by step
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
Репозиторий включает ~418 словников по категориям в dict/ (~930 МБ). Однако 6 файлов превышают лимит GitHub в 100 МБ и не включены в репозиторий:
| Файл | Размер |
|---|---|
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 |
Чтобы сгенерировать их локально, выполните:
go run ./cmd/olfa pipeline
Запуск полного пайплайна (синхронизация источников + сборка всех категорий) требует ~15 ГБ дискового пространства.
Всё управляется двумя файлами:
configs/taxonomy.json — таксономия категорий (236 категорий с псевдонимами).Отредактируйте configs/pipeline.yml и добавьте запись в массив sources:
{
"name": "my-wordlists",
"repo": "username/repo-name",
"branch": "main",
"paths": ["all"],
"tags": ["directories", "api"],
"priority": "medium"
}
| Поле | Описание |
|---|---|
name | Уникальный идентификатор источника |
repo | GitHub owner/repo (клонируется через https://github.com/...) |
branch | Отслеживаемая ветка |
paths | Каталоги для сканирования внутри репозитория (["all"] = всё) |
tags | Категории по умолчанию, когда авто-классификация не может определить категорию |
priority | high, medium или low — источники с высоким приоритетом попадают в *_short.txt, все источники — в *_long.txt |
После добавления источника запустите пайплайн, чтобы стянуть и классифицировать его:
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