
Analizzatore e interprete di regole Hashcat - Una Stele di Rosetta per decodificare la sintassi delle regole di hashcat
_ _ _ _ ____ _ _
| | | | __ _ ___| |__ ___ __ _| |_| _ \ ___ ___ ___| |_| |_ __ _
| |_| |/ _` / __| '_ \ / __/ _` | __| |_) / _ \/ __|/ _ \ __| __/ _` |
| _ | (_| \__ \ | | | (_| (_| | |_| _ < (_) \__ \ __/ |_| || (_| |
|_| |_|\__,_|___/_| |_|\___\__,_|\__|_| \_\___/|___/\___|\__|\__\__,_|
Decodifica la Stele di Rosetta delle Regole di Password Cracking
Un progetto Python progettato per analizzare i file di output della modalità debug 4 e 5 di hashcat al fine di identificare le regole più efficienti e tracciare i pattern di frequenza delle baseword utilizzate durante gli attacchi di password cracking.
--debug-mode 4 e --debug-mode 5) con estrazione automatica di baseword e regoleSe utilizzi uv, puoi eseguire senza installazione:
# Clone the repository
git clone https://github.com/bandrel/HashcatRosetta.git
cd HashcatRosetta
# Run as a module (recommended)
uv run python -m hashcat_rosetta --help
# Or use the installed command
uv run hashcat-rosetta --help
uv tool install git+https://github.com/bandrel/HashcatRosetta.git
Gli strumenti di sviluppo si trovano nel gruppo di dipendenze dev.
# With uv (installs the dev group by default)
uv sync
# With pip (25.1+)
pip install -e . --group dev
Analizza un file di debug di hashcat (mostra il riepilogo per impostazione predefinita):
hashcat-rosetta debug_output.txt
Mostra le regole principali per frequenza:
hashcat-rosetta debug_output.txt --rules --top 10 --metric frequency
Mostra le regole principali per altre metriche:
hashcat-rosetta debug_output.txt --rules --metric basewords
hashcat-rosetta debug_output.txt --rules --metric candidates
Mostra le baseword che appaiono più volte:
hashcat-rosetta debug_output.txt --basewords --top 10
Mostra le wordlist principali (solo modalità debug 5):
hashcat-rosetta debug_output.txt --wordlists --top 10
Mostra statistiche dettagliate per-wordlist (baseword uniche, candidati e regole):
hashcat-rosetta debug_output.txt --wordlists --top 10 --detail
L'output di --wordlists rispecchia quello di --rules: un'intestazione Top N Wordlists seguita da
righe numerate Wordlist: <name> (<count>). Quando un file in modalità 5 viene analizzato senza
flag di output, il riepilogo predefinito include anche una sezione Wordlist Statistics.
Forza una modalità debug specifica invece di rilevarla automaticamente:
hashcat-rosetta debug_output.txt --debug-mode 5 --wordlists
Mostra un'analisi dettagliata delle baseword:
hashcat-rosetta debug_output.txt --basewords --top 10 --detail --min-occurrences 2
Esporta il report di analisi completo:
hashcat-rosetta debug_output.txt --export report.json --format json
hashcat-rosetta debug_output.txt --export report.csv --format csv
Spiega cosa fa una regola di hashcat passo dopo passo:
hashcat-rosetta --explain "c$1" --baseword admin
hashcat-rosetta --explain "u$!" --baseword myword
Genera mask di hashcat da descrizioni in inglese utilizzando un LLM locale:
hashcat-rosetta --mask "The word 'Summer' followed by six digits."
Output:
Mask Suggestions for: 'The word 'Summer' followed by six digits.'
======================================================================
1. Summer?d?d?d?d?d?d
literal "Summer", then 6 × digit → 1,000,000 candidates
Why: matches the literal word followed by a 6-digit number
Salva la mask generata in un file:
hashcat-rosetta --mask "The word 'Summer' followed by six digits." -o masks.hcmask
Genera mask da altre descrizioni:
hashcat-rosetta --mask "a capitalized season, two digits, and a special char"
hashcat-rosetta --mask "year 2020-2025 followed by exclamation or question mark"
La funzionalità di generazione delle mask utilizza un server Ollama locale che esegue un endpoint
chat compatibile con OpenAI. Per impostazione predefinita, si connette a http://localhost:11434 e utilizza il modello
gemma3:27b (vedi sotto). Questi possono essere configurati tramite variabili d'ambiente
o flag CLI:
# Using environment variables
OLLAMA_HOST=http://192.168.1.100:11434 OLLAMA_MODEL=llama2:70b \
hashcat-rosetta --mask "your description here"
# Using CLI flags (override environment variables)
hashcat-rosetta --mask "your description" --ollama-host http://custom.host:11434 --model llama2
Nota sulla sicurezza: Le descrizioni delle mask vengono inviate solo all'endpoint Ollama che configuri
(localhost per impostazione predefinita, o ovunque punti --ollama-host/OLLAMA_HOST) — mai a un
provider cloud. L'SDK OpenAI viene utilizzato puramente come client HTTP verso quell'endpoint;
nessun dato o chiave API viene mai trasmesso a api.openai.com.
gemma3:27b?Il default è scelto da scripts/benchmark_mask_models.py, che esegue un set fisso di
14 prompt in stile --mask — inclusi back-reference a charset personalizzati e prompt di
recall di categoria (libri della Bibbia, riferimenti a versetti biblici, capitali europee) — contro ogni
modello candidato installato localmente e valuta ogni risposta in tre modi:
mp64 di hashcat-utils (maskprocessor), quando installato — questo è lo
stesso controllo che generate_masks() stesso esegue su ogni suggerimento in produzione, quindi un
hard fail del benchmark qui significa anche che l'uso reale di --mask lo avrebbe rifiutato.gemma3:12b su una seconda macchina, scelto
specificamente perché non è esso stesso un candidato — evita il bias di auto-valutazione) assegna
a ogni risposta un punteggio da 1 a 5 per quanto soddisfa la richiesta originale. Le richieste vengono inviate
con il thinking abilitato, poiché un modello lento costa comunque il tempo di round-trip in ogni caso.Il default raccomandato è il modello più piccolo con zero hard fail e un punteggio medio del giudice ≥ 4. I tre finalisti portati avanti dai round precedenti, rieseguiti contro il set completo di 14 prompt: