
Generatore di wordlist curato e categorizzato per web fuzzing, enumerazione delle directory e scoperta di sottodomini. Sincronizza automaticamente oltre 36 fonti, classifica le voci e produce liste ottimizzate brevi/lunghe per test di penetrazione.
Wordlist per fuzzing web: micro curata, short/long categorizzate e liste finali combinate.
onelistforallmicro.txt: lista curata (mantenuta manualmente).dict/<categoria>_short.txt: wordlist curata per categoria (fonti piccole/qualità).dict/<categoria>_long.txt: wordlist completa per categoria (tutte le fonti).onelistforall.txt: micro + tutti i *_short.txt, deduplicati.onelistforall_big.txt: tutto combinato, deduplicato.update): clona circa 36 repository di wordlist in sources/.classify): esamina ogni file .txt in sources/, classifica ciascuno in categorie usando struttura del percorso, parole chiave nel nome file e campionamento del contenuto. Produce classification_index.json.build --all-categories): per ogni categoria, unisce i file sorgente classificati in dict/{cat}_short.txt e dict/{cat}_long.txt con filtraggio e deduplicazione.assemble): combina micro + tutti i short in onelistforall.txt, e tutto in onelistforall_big.txt.package): crea archivi 7z con checksum.publish): esegue auto-commit delle modifiche in dict/ e push verso il remoto.git (per update)7z (solo per 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
Il repository include circa 418 wordlist di categoria in dict/ (~930 MB). Tuttavia, 6 file superano il limite di 100 MB di GitHub e non sono inclusi nel repository:
| File | Dimensione |
|---|---|
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 |
Per generarli localmente, esegui:
go run ./cmd/olfa pipeline
Eseguire l'intero pipeline (sincronizzazione fonti + costruzione tutte le categorie) richiede ~15 GB di spazio su disco.
Tutto è controllato da due file:
configs/pipeline.yml — fonti, filtri, regole di classificazione, impostazioni dedup, configurazione release.configs/taxonomy.json — tassonomia delle categorie (236 categorie con alias).Modifica configs/pipeline.yml e aggiungi una voce all'array sources:
{
"name": "my-wordlists",
"repo": "username/repo-name",
"branch": "main",
"paths": ["all"],
"tags": ["directories", "api"],
"priority": "medium"
}
| Campo | Descrizione |
|---|---|
name | Identificatore univoco per la fonte |
repo | owner/repo di GitHub (clonato tramite https://github.com/...) |
branch | Branch da tracciare |
paths | Directory da analizzare all'interno del repository (["all"] = tutto) |
tags | Categorie di fallback quando la classificazione automatica non può determinare la categoria |
priority | high, medium o low — le fonti ad alta priorità vanno in *_short.txt, tutte le fonti vanno in *_long.txt |
Dopo aver aggiunto una fonte, esegui il pipeline per scaricarla e classificarla:
go run ./cmd/olfa pipeline
Oppure sincronizza solo la nuova fonte:
go run ./cmd/olfa update --source my-wordlists
I filtri globali in pipeline.yml controllano quali righe vengono mantenute o scartate:
regex_denylist — le righe che corrispondono a qualsiasi pattern vengono rimosse (es. URL, UUID, estensioni di immagini)max_line_len — le righe più lunghe di questo valore vengono scartate (default: 100 caratteri)trim — rimuove spazi bianchi iniziali/finalidrop_empty — rimuove righe vuoteFiltri per categoria possono essere impostati in category_filters (es. subdomains consente solo caratteri validi per hostname).
Ogni categoria produce due wordlist:
*_short.txt — solo da fonti a priorità high, o file con meno di 5000 righe, o nomi file contenenti parole chiave come common, short, top, default.*_long.txt — tutte le fonti combinate.Soglie e parole chiave sono configurabili in classification.short_line_threshold, classification.short_keywords e classification.long_keywords.
Le categorie sono definite in configs/taxonomy.json. Ognuna ha un nome canonico e alias. I file sorgente vengono abbinati alle categorie per:
Discovery/DNS/* → subdomains)Per elencare tutte le categorie disponibili:
go run ./cmd/olfa list --categories
go run ./cmd/olfa list --categories --format json