
Uma ferramenta para automatizar metodologias de cracking através do Hashcat da equipe TrustedSec.
___ ___ __ _________ __
/ | \_____ _/ |_ ____ \_ ___ \____________ ____ | | __
/ ~ \__ \\ __\/ __ \ / \ \/\_ __ \__ \ _/ ___\| |/ /
\ Y // __ \| | \ ___/ \ \____| | \// __ \\ \___| <
\___|_ /(____ /__| \___ >____\______ /|__| (____ /\___ >__|_ \
\/ \/ \/_____/ \/ \/ \/ \/
A instalação a partir do código-fonte é o único caminho suportado. O hate_crack não é
distribuído no PyPI: pip install hate-crack resolve para um placeholder 0.0.0
que falha de propósito e aponta de volta para cá. O nome é mantido apenas para que ninguém mais
possa publicar um sósia sob ele — consulte
packaging/pypi-placeholder/.
O Hashcat deve estar instalado e disponível no seu PATH:
Ubuntu/Kali:
sudo apt-get install -y hashcat
macOS (Homebrew):
brew install hashcat
Ou baixe um binário pré-compilado em https://hashcat.net/hashcat/ e defina hcatPath em config.json para o local dele.
Clone com submódulos (necessário para hashcat-utils, princeprocessor, pcfg_cracker, Corporate_Masks e, opcionalmente, omen):
git clone --recurse-submodules https://github.com/trustedsec/hate_crack.git
cd hate_crack
Se você clonou sem submódulos, inicialize-os:
git submodule update --init --recursive
Em seguida, personalize a configuração, se necessário. O hate_crack usa dois arquivos de configuração, cada um responsável por um conjunto distinto de definições:
config.json — caminhos de wordlist, máscaras, regras, ajuste fino, potfile, caminho do hashcat, limites de candidatos, alternâncias de notificação, padrões de preferência da CLI (35 definições)..env — apenas definições de integração com terceiros: credenciais do Hashview e do Hashmob, credenciais do Pushover, Ollama e pipal (14 definições). Não rastreado pelo git, criado com modo 0600.A linha divisória existe por um motivo: .env é o arquivo que pode conter segredos. As credenciais e a configuração de serviços de terceiros ficam no arquivo não rastreado, com modo 0600; tudo o que o hate_crack faz localmente permanece em config.json, que é seguro para compartilhar, comparar com diff e incluir nas suas próprias notas. É também por isso que as credenciais do Pushover ficam em .env, enquanto as alternâncias de ativação/desativação do Pushover ficam em config.json — as alternâncias são preferências locais, não segredos.
Cada chave tem exatamente um único local. Uma chave colocada no outro arquivo é ignorada, e o hate_crack imprime um aviso indicando o arquivo ao qual ela pertence. Qualquer chave ainda pode ser substituída para uma única execução exportando sua variável de ambiente. A maioria dos usuários pode pular esta etapa, pois os caminhos padrão funcionam imediatamente.
config.json é permanente e de primeira classe — não está obsoleto e não há prazo para sua remoção. Apenas as definições de integração foram movidas.
Atualizando a partir de um único config.json? O hate_crack migra isso para você na primeira execução: as definições de integração são copiadas para um novo .env com modo 0600 e, em seguida, removidas de config.json para que os dois arquivos não as reivindiquem simultaneamente. Ele imprime quais chaves foram movidas (nunca seus valores) e salva o original como config.json.pre-split.bak antes de modificá-lo. Todo o restante em config.json é deixado exatamente como estava, incluindo a ordem das chaves.
Primeira execução: o hate_crack cria ambos os arquivos para você, então não há nada a fazer. Para configurar o .env manualmente, copie o modelo rastreado:
cp .env.example .env
chmod 600 .env
.env.example é versionado e acompanha cada chave de credencial vazia. O próprio .env nunca deve ser versionado — ele está no gitignore, junto com suas grafias usuais de backup, e o hate_crack sempre o cria com modo 0600 (somente leitura/escrita do proprietário). O .env.example é gerado a partir do schema; regenere-o após alterar hate_crack/config_schema.py com uv run python -m hate_crack.config_writer.
A maneira mais fácil é executar make (ou make install), que detecta automaticamente seu sistema operacional e instala:
~/.local/bin/hate_crackmake
Isto é idempotente - ignora ferramentas já instaladas. Para forçar uma reinstalação limpa:
make reinstall
Ou instale as dependências manualmente:
Estas são necessárias para certos fluxos de download/extração:
7z/7za (p7zip) — usado para extrair arquivos .7z.transmission-daemon / transmission-remote — usado para baixar torrents do Weakpass.Comandos de instalação manual:
Ubuntu/Kali:
sudo apt-get update
sudo apt-get install -y p7zip-full transmission-daemon
macOS (Homebrew):
brew install p7zip transmission-cli # provides transmission-daemon and transmission-remote
Em seguida, instale as dependências Python e o shim de CLI:
uv sync
mkdir -p ~/.local/bin
printf '#!/usr/bin/env bash\nset -euo pipefail\nexec uv run --directory %s python -m hate_crack "$@"\n' "$(pwd)" > ~/.local/bin/hate_crack
chmod +x ~/.local/bin/hate_crack
A lógica principal agora está dividida em módulos sob hate_crack/:
hate_crack/cli.py: auxiliares de argparse e substituições de configuração.hate_crack/api.py: integrações com Hashview, Weakpass e Hashmob (downloads/menus/auxiliares).hate_crack/attacks.py: manipuladores de ataques do menu.hate_crack/corpus_stats.py: estatísticas de senhas de todo o corpus usadas para descrever um corpus ao LLM.hate_crack/plaintext.py: recupera a senha a partir de uma linha do corpus (remoção de prefixo de hash, decodificação de $HEX[...]); compartilhado pelos modos LLM, corpus_stats e rulegen.hate_crack/llm.py: geração estruturada (JSON) de candidatos por LLM via Atomic Agents.hate_crack/menu.py: renderizador de menu compartilhado, incluindo navegação opcional por teclas de seta.hate_crack/noninteractive.py: despachante para os subcomandos de ataque roteirizados.hate_crack/notify/: pacote de notificações (backend Pushover, tailer por quebra).hate_crack/username_detect.py: detecta arquivos de entrada username:hash para decidir sobre o --username do hashcat.hate_crack/formatting.py, hate_crack/progress.py: auxiliares de formatação de saída e exibição de progresso.hate_crack/main.py: implementação principal da CLI.O hate_crack.py de nível superior permanece como ponto de entrada principal e orquestra esses módulos.
Este projeto depende e é inspirado por uma série de projetos e serviços externos. Agradecimentos a:
Após instalar com make, execute o hate_crack de qualquer lugar:
hate_crack
# or with arguments:
hate_crack <hash_file> <hash_type> [options]
Como alternativa, execute via uv:
uv run hate_crack.py <hash_file> <hash_type>