
Analizador e intérprete de reglas de Hashcat: una piedra de Rosetta para decodificar la sintaxis de reglas de hashcat
| | | | __ _ | | ___ __ | || _ \ ___ ___ | || | __ _
| || |/ / __| '_ \ / __/ _ | __| |) / _ / __|/ _ \ __| / ` |
| _ | (| _ \ | | | (| (| | || _ < () __ \ / || || (| |
|| ||_,|/| ||____,|_|| __/|/___|_|__,|
Decodifica la Piedra Rosetta de las Reglas de Cracking de Contraseñas
# HashcatRosetta
Un proyecto en Python diseñado para analizar archivos de salida del modo debug 4 y modo debug 5 de hashcat, con el fin de identificar las reglas más eficientes y rastrear los patrones de frecuencia de palabras base utilizados durante los ataques de cracking de contraseñas.
## Características
- **Analiza archivos de debug de hashcat** (`--debug-mode 4` y `--debug-mode 5`) con extracción automática de palabras base y reglas
- **Atribuye candidatos a las wordlists de origen** (modo 5) para obtener estadísticas por wordlist
- **Rastrea la eficiencia de las reglas** mediante múltiples métricas:
- Frecuencia de aplicación (reglas aplicadas con más frecuencia)
- Alcance de palabras base (reglas aplicadas a la mayor cantidad de palabras base únicas)
- Generación de candidatos (reglas que producen la mayor cantidad de candidatos únicos)
- **Monitorea patrones de palabras base** con registros detallados de ocurrencias y estadísticas
- **Genera informes detallados** con analíticas de reglas y palabras base
- **Exporta el análisis** a formatos JSON o CSV para su posterior procesamiento
- **Interfaz de línea de comandos** para facilitar el análisis y la generación de informes
## Instalación
### Uso con uv (recomendado)
Si utilizas [uv](https://github.com/astral-sh/uv), puedes ejecutarlo sin instalación:
```bash
# Clona el repositorio
git clone https://github.com/bandrel/HashcatRosetta.git
cd HashcatRosetta
# Ejecuta como módulo (recomendado)
uv run python -m hashcat_rosetta --help
# O usa el comando instalado
uv run hashcat-rosetta --help
uv tool install git+https://github.com/bandrel/HashcatRosetta.git
Las herramientas de desarrollo se encuentran en el grupo de dependencias dev.
# Con uv (instala el grupo dev por defecto)
uv sync
# Con pip (25.1+)
pip install -e . --group dev
Analiza un archivo de debug de hashcat (muestra el resumen por defecto):
hashcat-rosetta debug_output.txt
Muestra las reglas principales por frecuencia:
hashcat-rosetta debug_output.txt --rules --top 10 --metric frequency
Muestra las reglas principales por otras métricas:
hashcat-rosetta debug_output.txt --rules --metric basewords
hashcat-rosetta debug_output.txt --rules --metric candidates
Muestra las palabras base que aparecen múltiples veces:
hashcat-rosetta debug_output.txt --basewords --top 10
Muestra las wordlists principales (solo modo debug 5):
hashcat-rosetta debug_output.txt --wordlists --top 10
Muestra estadísticas detalladas por wordlist (palabras base únicas, candidatos y reglas):
hashcat-rosetta debug_output.txt --wordlists --top 10 --detail
La salida de --wordlists refleja la de --rules: un encabezado Top N Wordlists seguido de
líneas numeradas Wordlist: <name> (<count>). Cuando se analiza un archivo de modo 5 sin
ninguna bandera de salida, el resumen por defecto también incluye una sección de Estadísticas de Wordlists.
Fuerza un modo debug específico en lugar de detectarlo automáticamente:
hashcat-rosetta debug_output.txt --debug-mode 5 --wordlists
Muestra un análisis detallado de palabras base:
hashcat-rosetta debug_output.txt --basewords --top 10 --detail --min-occurrences 2
Exporta el informe de análisis completo:
hashcat-rosetta debug_output.txt --export report.json --format json
hashcat-rosetta debug_output.txt --export report.csv --format csv
Explica paso a paso lo que hace una regla de hashcat:
hashcat-rosetta --explain "c$1" --baseword admin
hashcat-rosetta --explain "u$!" --baseword myword
Genera máscaras de hashcat a partir de descripciones en inglés usando un LLM local:
hashcat-rosetta --mask "The word 'Summer' followed by six digits."
Salida:
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
Guarda la máscara generada en un archivo:
hashcat-rosetta --mask "The word 'Summer' followed by six digits." -o masks.hcmask
Genera máscaras a partir de otras descripciones:
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 función de generación de máscaras utiliza un servidor Ollama local que ejecuta un endpoint
de chat compatible con OpenAI. Por defecto, se conecta a http://localhost:11434 y usa el modelo
gemma3:27b (ver más abajo). Estos se pueden configurar mediante variables de entorno
o banderas de CLI:
# Usando variables de entorno
OLLAMA_HOST=http://192.168.1.100:11434 OLLAMA_MODEL=llama2:70b \
hashcat-rosetta --mask "your description here"
# Usando banderas de CLI (anulan las variables de entorno)
hashcat-rosetta --mask "your description" --ollama-host http://custom.host:11434 --model llama2
Nota de seguridad: Las descripciones de máscaras se envían únicamente al endpoint de Ollama que configures
(localhost por defecto, o donde apunte --ollama-host/OLLAMA_HOST) — nunca a un
proveedor en la nube. El SDK de OpenAI se utiliza puramente como cliente HTTP contra ese endpoint;
ningún dato ni clave de API se transmite jamás a api.openai.com.
gemma3:27b?El valor por defecto es elegido por scripts/benchmark_mask_models.py, que ejecuta un conjunto fijo de
14 prompts estilo --mask — incluyendo referencias inversas a conjuntos de caracteres personalizados y prompts de
recuerdo de categorías (libros de la Biblia, referencias de versículos bíblicos, capitales europeas) — contra cada
modelo candidato instalado localmente y califica cada respuesta de tres maneras: