
Analisador e interpretador de regras do Hashcat - Uma Pedra de Roseta para decodificar a sintaxe de regras do hashcat
| | | | __ _ | | ___ __ | || _ \ ___ ___ | || | __ _
| || |/ / __| '_ \ / __/ _ | __| |) / _ / __|/ _ \ __| / ` |
| _ | (| _ \ | | | (| (| | || _ < () __ \ / || || (| |
|| ||_,|/| ||____,|_|| __/|/___|_|__,|
Decodifique a Pedra de Roseta das Regras de Quebra de Senhas
# HashcatRosetta
Um projeto em Python projetado para analisar arquivos de saída do modo de depuração 4 e 5 do hashcat para identificar as regras mais eficientes e rastrear padrões de frequência de palavras-base usados durante ataques de quebra de senhas.
## Recursos
- **Analisa arquivos de depuração do hashcat** (`--debug-mode 4` e `--debug-mode 5`) com extração automática de palavras-base e regras
- **Atribui candidatos às wordlists de origem** (modo 5) para estatísticas por wordlist
- **Rastreia a eficiência das regras** por múltiplas métricas:
- Frequência de aplicação (regras aplicadas com mais frequência)
- Alcance de palavras-base (regras aplicadas ao maior número de palavras-base únicas)
- Geração de candidatos (regras que produzem mais candidatos únicos)
- **Monitora padrões de palavras-base** com logs detalhados de ocorrências e estatísticas
- **Gera relatórios detalhados** com análises de regras e palavras-base
- **Exporta a análise** para formatos JSON ou CSV para processamento posterior
- **Interface de linha de comando** para análise e relatórios fáceis
## Instalação
### Usando com uv (recomendado)
Se você estiver usando [uv](https://github.com/astral-sh/uv), pode executar sem instalação:
```bash
# Clone o repositório
git clone https://github.com/bandrel/HashcatRosetta.git
cd HashcatRosetta
# Execute como um módulo (recomendado)
uv run python -m hashcat_rosetta --help
# Ou use o comando instalado
uv run hashcat-rosetta --help
uv tool install git+https://github.com/bandrel/HashcatRosetta.git
As ferramentas de desenvolvimento ficam no grupo de dependências dev.
# Com uv (instala o grupo dev por padrão)
uv sync
# Com pip (25.1+)
pip install -e . --group dev
Analise um arquivo de depuração do hashcat (mostra o resumo por padrão):
hashcat-rosetta debug_output.txt
Mostre as principais regras por frequência:
hashcat-rosetta debug_output.txt --rules --top 10 --metric frequency
Mostre as principais regras por outras métricas:
hashcat-rosetta debug_output.txt --rules --metric basewords
hashcat-rosetta debug_output.txt --rules --metric candidates
Mostre palavras-base que aparecem múltiplas vezes:
hashcat-rosetta debug_output.txt --basewords --top 10
Mostre as principais wordlists (apenas modo de depuração 5):
hashcat-rosetta debug_output.txt --wordlists --top 10
Mostre estatísticas detalhadas por wordlist (palavras-base únicas, candidatos e regras):
hashcat-rosetta debug_output.txt --wordlists --top 10 --detail
A saída de --wordlists espelha --rules: um cabeçalho Top N Wordlists seguido por
linhas numeradas Wordlist: <name> (<count>). Quando um arquivo do modo 5 é analisado sem
nenhuma flag de saída, o resumo padrão também inclui uma seção Wordlist Statistics.
Force um modo de depuração específico em vez de detectá-lo automaticamente:
hashcat-rosetta debug_output.txt --debug-mode 5 --wordlists
Mostre análise detalhada de palavras-base:
hashcat-rosetta debug_output.txt --basewords --top 10 --detail --min-occurrences 2
Exporte o relatório de análise completo:
hashcat-rosetta debug_output.txt --export report.json --format json
hashcat-rosetta debug_output.txt --export report.csv --format csv
Explique o que uma regra do hashcat faz passo a passo:
hashcat-rosetta --explain "c$1" --baseword admin
hashcat-rosetta --explain "u$!" --baseword myword
Gere máscaras do hashcat a partir de descrições em inglês usando um LLM local:
hashcat-rosetta --mask "The word 'Summer' followed by six digits."
Saída:
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
Salve a máscara gerada em um arquivo:
hashcat-rosetta --mask "The word 'Summer' followed by six digits." -o masks.hcmask
Gere máscaras a partir de outras descrições:
hashcat-rosetta --mask "a capitalized season, two digits, and a special char"
hashcat-rosetta --mask "year 2020-2025 followed by exclamation or question mark"
O recurso de geração de máscaras usa um servidor Ollama local executando um endpoint de chat
compatível com OpenAI. Por padrão, ele se conecta a http://localhost:11434 e usa o modelo
gemma3:27b (veja abaixo). Estes podem ser configurados via variáveis de ambiente
ou flags de CLI:
# Usando variáveis de ambiente
OLLAMA_HOST=http://192.168.1.100:11434 OLLAMA_MODEL=llama2:70b \
hashcat-rosetta --mask "your description here"
# Usando flags de CLI (sobrescrevem variáveis de ambiente)
hashcat-rosetta --mask "your description" --ollama-host http://custom.host:11434 --model llama2
Nota de segurança: As descrições de máscaras são enviadas apenas para o endpoint Ollama que você configurar
(localhost por padrão, ou onde quer que --ollama-host/OLLAMA_HOST aponte) — nunca para um
provedor de nuvem. O SDK da OpenAI é usado puramente como um cliente HTTP contra esse endpoint;
nenhum dado ou chave de API é transmitido para api.openai.com.
gemma3:27b?O padrão é escolhido por scripts/benchmark_mask_models.py, que executa um conjunto fixo de
14 prompts no estilo --mask — incluindo back-references de charset personalizado e prompts de
recall de categoria (livros da Bíblia, referências de versículos bíblicos, capitais europeias) — contra cada
modelo candidato instalado localmente e avalia cada resposta de três maneiras:
mp64 (maskprocessor) do hashcat-utils, quando instalado — esta é a
mesma verificação que o próprio generate_masks() executa em cada sugestão em produção, então uma
falha dura no benchmark aqui também significa que o uso real de --mask a teria rejeitado.gemma3:12b em uma segunda máquina, escolhido
especificamente porque ele próprio não é um candidato — evita viés de autoavaliação) pontua
cada resposta de 1 a 5 quanto ao quão bem ela satisfaz a solicitação original. As solicitações são enviadas
com o pensamento habilitado, já que um modelo lento já custa o tempo de ida e volta de qualquer forma.O padrão recomendado é o menor modelo com zero falhas duras e uma pontuação média do juiz ≥ 4. Os três finalistas trazidos de rodadas anteriores, reexecutados contra o conjunto completo de 14 prompts: