
Analyseur et interpréteur de règles Hashcat - Une pierre de Rosette pour décoder la syntaxe des règles hashcat
| | | | __ _ | | ___ __ | || _ \ ___ ___ | || | __ _
| || |/ / __| '_ \ / __/ _ | __| |) / _ / __|/ _ \ __| / ` |
| _ | (| _ \ | | | (| (| | || _ < () __ \ / || || (| |
|| ||_,|/| ||____,|_|| __/|/___|_|__,|
Décodez la pierre de Rosette des règles de cassage de mots de passe
# HashcatRosetta
Un projet Python conçu pour analyser les fichiers de sortie du mode debug 4 et 5 de hashcat afin d'identifier les règles les plus efficaces et de suivre les motifs de fréquence des mots de base utilisés lors des attaques de cassage de mots de passe.
## Fonctionnalités
- **Analyser les fichiers de debug hashcat** (`--debug-mode 4` et `--debug-mode 5`) avec extraction automatique des mots de base et des règles
- **Attribuer les candidats aux wordlists sources** (mode 5) pour des statistiques par wordlist
- **Suivre l'efficacité des règles** selon plusieurs métriques :
- Fréquence d'application (règles les plus couramment appliquées)
- Étendue des mots de base (règles appliquées au plus grand nombre de mots de base uniques)
- Génération de candidats (règles produisant le plus de candidats uniques)
- **Surveiller les motifs de mots de base** avec des journaux d'occurrences détaillés et des statistiques
- **Générer des rapports détaillés** avec des analyses de règles et de mots de base
- **Exporter l'analyse** aux formats JSON ou CSV pour un traitement ultérieur
- **Interface en ligne de commande** pour une analyse et un rapport faciles
## Installation
### Avec uv (recommandé)
Si vous utilisez [uv](https://github.com/astral-sh/uv), vous pouvez exécuter sans installation :
```bash
# Cloner le dépôt
git clone https://github.com/bandrel/HashcatRosetta.git
cd HashcatRosetta
# Exécuter en tant que module (recommandé)
uv run python -m hashcat_rosetta --help
# Ou utiliser la commande installée
uv run hashcat-rosetta --help
uv tool install git+https://github.com/bandrel/HashcatRosetta.git
Les outils de développement se trouvent dans le groupe de dépendances dev.
# Avec uv (installe le groupe dev par défaut)
uv sync
# Avec pip (25.1+)
pip install -e . --group dev
Analyser un fichier de debug hashcat (affiche un résumé par défaut) :
hashcat-rosetta debug_output.txt
Afficher les meilleures règles par fréquence :
hashcat-rosetta debug_output.txt --rules --top 10 --metric frequency
Afficher les meilleures règles selon d'autres métriques :
hashcat-rosetta debug_output.txt --rules --metric basewords
hashcat-rosetta debug_output.txt --rules --metric candidates
Afficher les mots de base apparaissant plusieurs fois :
hashcat-rosetta debug_output.txt --basewords --top 10
Afficher les meilleures wordlists (mode debug 5 uniquement) :
hashcat-rosetta debug_output.txt --wordlists --top 10
Afficher les statistiques détaillées par wordlist (mots de base uniques, candidats et règles) :
hashcat-rosetta debug_output.txt --wordlists --top 10 --detail
La sortie de --wordlists reflète celle de --rules : un en-tête Top N Wordlists suivi de
lignes numérotées Wordlist: <name> (<count>). Lorsqu'un fichier en mode 5 est analysé sans
aucun indicateur de sortie, le résumé par défaut inclut également une section Wordlist Statistics.
Forcer un mode debug spécifique au lieu de le détecter automatiquement :
hashcat-rosetta debug_output.txt --debug-mode 5 --wordlists
Afficher une analyse détaillée des mots de base :
hashcat-rosetta debug_output.txt --basewords --top 10 --detail --min-occurrences 2
Exporter un rapport d'analyse complet :
hashcat-rosetta debug_output.txt --export report.json --format json
hashcat-rosetta debug_output.txt --export report.csv --format csv
Expliquer pas à pas ce que fait une règle hashcat :
hashcat-rosetta --explain "c$1" --baseword admin
hashcat-rosetta --explain "u$!" --baseword myword
Générer des masques hashcat à partir de descriptions en anglais à l'aide d'un LLM local :
hashcat-rosetta --mask "The word 'Summer' followed by six digits."
Sortie :
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
Enregistrer le masque généré dans un fichier :
hashcat-rosetta --mask "The word 'Summer' followed by six digits." -o masks.hcmask
Générer des masques à partir d'autres descriptions :
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 fonctionnalité de génération de masques utilise un serveur Ollama local exécutant un point de terminaison de chat compatible OpenAI.
Par défaut, elle se connecte à http://localhost:11434 et utilise le modèle
gemma3:27b (voir ci-dessous). Ces paramètres peuvent être configurés via des variables d'environnement
ou des indicateurs CLI :
# Utilisation des variables d'environnement
OLLAMA_HOST=http://192.168.1.100:11434 OLLAMA_MODEL=llama2:70b \
hashcat-rosetta --mask "your description here"
# Utilisation des indicateurs CLI (remplacent les variables d'environnement)
hashcat-rosetta --mask "your description" --ollama-host http://custom.host:11434 --model llama2
Note de sécurité : Les descriptions de masques sont envoyées uniquement au point de terminaison Ollama que vous configurez
(localhost par défaut, ou partout où pointe --ollama-host/OLLAMA_HOST) — jamais à un
fournisseur cloud. Le SDK OpenAI est utilisé purement comme client HTTP contre ce point de terminaison ;
aucune donnée ni clé API n'est jamais transmise à api.openai.com.
gemma3:27b ?La valeur par défaut est choisie par scripts/benchmark_mask_models.py, qui exécute un ensemble fixe de
14 invites de style --mask — incluant des références arrière de jeux de caractères personnalisés et des invites de rappel de catégorie
(livres de la Bible, références de versets bibliques, capitales européennes) — contre chaque
modèle candidat installé localement et note chaque réponse de trois façons :