
TrustedSec チームによる、Hashcat を通じてクラッキング手法を自動化するツール。
___ ___ __ _________ __
/ | \_____ _/ |_ ____ \_ ___ \____________ ____ | | __
/ ~ \__ \\ __\/ __ \ / \ \/\_ __ \__ \ _/ ___\| |/ /
\ Y // __ \| | \ ___/ \ \____| | \// __ \\ \___| <
\___|_ /(____ /__| \___ >____\______ /|__| (____ /\___ >__|_ \
\/ \/ \/_____/ \/ \/ \/ \/
ソースからのインストールが唯一サポートされている方法です。hate_crack は PyPI では配布されていません。pip install hate-crack は意図的に失敗する 0.0.0 のプレースホルダーに解決され、ここへ戻ってくるようになっています。この名前が確保されているのは、誰かがその名前で類似品を公開できないようにするためだけです — 詳細は
packaging/pypi-placeholder/ を参照してください。
hashcat がインストールされ、PATH から利用可能である必要があります:
Ubuntu/Kali:
sudo apt-get install -y hashcat
macOS(Homebrew):
brew install hashcat
または、https://hashcat.net/hashcat/ からビルド済みバイナリをダウンロードし、config.json の hcatPath にその場所を設定してください。
サブモジュール付きでクローンします(hashcat-utils、princeprocessor、pcfg_cracker、Corporate_Masks、およびオプションで omen に必要です):
git clone --recurse-submodules https://github.com/trustedsec/hate_crack.git
cd hate_crack
サブモジュールなしでクローンした場合は、それらを初期化してください:
git submodule update --init --recursive
必要に応じて設定をカスタマイズします。hate_crack は 2 つの設定ファイルを使用し、それぞれが異なる設定群を管理します:
config.json — ワードリストのパス、マスク、ルール、チューニング、potfile、hashcat のパス、候補数の上限、通知のトグル、CLI の優先デフォルト (35 設定)。.env — サードパーティ連携の設定のみ: Hashview と Hashmob の認証情報、Pushover の認証情報、Ollama、pipal (14 設定)。git では追跡されず、モード 0600 で作成されます。この線引きには 1 つの理由があります: .env はシークレットを保持し得るファイルだからです。サードパーティサービスの認証情報と設定は追跡されない 0600 のファイルに入り、hate_crack がローカルで行うことはすべて config.json に残ります。config.json は共有、diff、自分のノートへのチェックインが安全です。これが、Pushover の認証情報が .env にあり、Pushover のオン/オフトグルが config.json にある理由でもあります — トグルはローカルの設定であり、シークレットではないからです。
各キーにはちょうど 1 つの置き場所があります。もう一方のファイルに置かれたキーは無視され、hate_crack はそれが属するファイル名を示す警告を出力します。どのキーも、環境変数をエクスポートすることで単一の実行に限り上書きできます。デフォルトのパスはそのまま動作するため、ほとんどのユーザーはこの手順を省略できます。
config.json は恒久的かつ第一級の設定です — 非推奨ではなく、削除の予定もありません。移動したのは連携設定のみです。
単一の config.json からアップグレードする場合 hate_crack が初回実行時に自動で移行します: 連携設定は新しい 0600 の .env にコピーされ、その後 config.json から削除されるため、両方のファイルが同じ設定を主張することはありません。移動したキー (値は決して含めません) を出力し、変更を加える前に元のファイルを config.json.pre-split.bak として保存します。config.json のその他すべては、キーの順序も含めてまったくそのまま残されます。
初回実行時: hate_crack が両方のファイルを作成するため、何もする必要はありません。代わりに .env を手動でセットアップするには、追跡されているテンプレートをコピーします:
cp .env.example .env
chmod 600 .env
.env.example はコミットされており、すべての認証情報キーが空の状態で提供されます。.env 自体は決してコミットしてはいけません — gitignore 対象であり、よくあるバックアップ名の綴りも同様に除外され、hate_crack は常にモード 0600(所有者のみ読み書き可能)でこれを作成します。.env.example はスキーマから生成されます。hate_crack/config_schema.py を変更した後は、uv run python -m hate_crack.config_writer で再生成してください。
最も簡単な方法は make(または make install)を実行することです。これは OS を自動検出し、以下をインストールします:
~/.local/bin/hate_crack にある CLI シムmake
これは冪等です。すでにインストール済みのツールはスキップされます。クリーンな再インストールを強制するには:
make reinstall
または依存関係を手動でインストール:
これらは特定のダウンロード/展開フローに必要です:
7z/7za (p7zip) — .7z アーカイブの展開に使用されます。transmission-daemon / transmission-remote — Weakpass の torrent をダウンロードするために使用されます。手動インストールコマンド:
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
次に、Python の依存関係と 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
コアロジックは現在、hate_crack/ 配下のモジュールに分割されています:
hate_crack/cli.py: argparse ヘルパーと設定のオーバーライド。hate_crack/api.py: Hashview、Weakpass、Hashmob の統合(ダウンロード/メニュー/ヘルパー)。hate_crack/attacks.py: メニュー攻撃ハンドラー。hate_crack/corpus_stats.py: コーパスを LLM に説明するために使用される、コーパス全体のパスワード統計。hate_crack/plaintext.py: コーパス行からパスワードを復元します(ハッシュプレフィックスの除去、$HEX[...] のデコード)。LLM モード、corpus_stats、rulegen で共有されます。hate_crack/llm.py: Atomic Agents を介した構造化(JSON)LLM 候補生成。hate_crack/menu.py: 共有メニューレンダラー(オプションの矢印キーナビゲーションを含む)。hate_crack/noninteractive.py: スクリプト化された攻撃サブコマンドのディスパッチャー。hate_crack/notify/: 通知パッケージ(Pushover バックエンド、クラックごとのテーラー)。hate_crack/username_detect.py: username:hash 形式の入力ファイルを検出し、hashcat の --username を決定します。hate_crack/formatting.py、hate_crack/progress.py: 出力フォーマットと進捗表示のヘルパー。hate_crack/main.py: メイン CLI の実装。トップレベルの hate_crack.py はメインのエントリポイントとして残り、これらのモジュールを統括します。
このプロジェクトは、数多くの外部プロジェクトやサービスに依存し、またそれらから着想を得ています。以下に感謝します:
make でインストールした後、任意の場所から hate_crack を実行します:
hate_crack
# or with arguments:
hate_crack <hash_file> <hash_type> [options]
または、uv 経由で実行します:
uv run hate_crack.py <hash_file> <hash_type>
リポジトリのルートから make を使用してインストールします。これによりサブモジュールがビルドされ、アセットがバンドルされます:
cd /path/to/hate_crack
make
hate_crack
make install コマンドは ~/.local/bin/hate_crack に bash シムを作成し、リポジトリディレクトリから実行されるため、現在の作業ディレクトリに関係なく設定とアセットが常に見つかります。
設定は以下でも検索されます:
~/.hate_crack注: config.json 内の hcatPath は hashcat バイナリの場所専用です(hashcat が PATH にある場合は任意)。Hate_crack のアセット(hashcat-utils、princeprocessor、pcfg_cracker、Corporate_Masks、omen)はリポジトリディレクトリから読み込まれ、make install によって自動的にバンドルされます。
スクリプトは uv シバンを使用します。実行可能にしてから実行してください:
chmod +x hate_crack.py
./hate_crack.py
Pythonを直接使用することもできます:
python hate_crack.py
自動化のために、メニューをバイパスして単一の攻撃を直接起動できます。攻撃名が最初の引数で、その後にハッシュファイルとhashcatのハッシュタイプが続きます。前処理のプロンプト(コンピューターアカウントのフィルタリング、LM優先のブルートフォース、重複アカウントの重複排除)は、このモードではデフォルトを自動的に受け入れます。プロセスは成功時に0、エラー時(ハッシュファイルの欠落、数値以外のハッシュタイプ、ワードリストの欠落、または不明なルールファイル名)には非ゼロで終了します。
# Quick crack: one wordlist + optional rule(s) from the rules directory
hate_crack quick hashes.txt 1000 --wordlist rockyou.txt --rules best64.rule
# Chain two rules in a single run
hate_crack quick hashes.txt 1000 --wordlist rockyou.txt --rules best64.rule+d3ad0ne.rule
# Run two rules as two separate passes
hate_crack quick hashes.txt 1000 --wordlist rockyou.txt --rules best64.rule d3ad0ne.rule
# Canned dictionary methodology (uses your configured wordlists)
hate_crack dict hashes.txt 1000
# Brute force lengths 1-8
hate_crack brute hashes.txt 1000 --min 1 --max 8
# Top-mask attack targeting ~4 hours
hate_crack topmask hashes.txt 1000 --target-time 4
メニューの攻撃のほとんどは同じ方法で利用できます。これらはハッシュファイルとハッシュタイプ以外に何も必要としません:
hate_crack fingerprint hashes.txt 1000
hate_crack pathwell hashes.txt 1000
hate_crack prince hashes.txt 1000
hate_crack pcfg hashes.txt 1000
hate_crack pcfg hashes.txt 1000 --ruleset default-passwords --costmax 48
hate_crack pcfg hashes.txt 1000 --mask '?u?l?l?l?l?d?d?d'
hate_crack pcfg hashes.txt 1000 --contains alpha --contains beta --pwmin 8 --pwmax 14
hate_crack pcfghints hashes.txt 1000 --hintwords alpha,beta
hate_crack princeling hashes.txt 1000
hate_crack smartmask hashes.txt 1000
hate_crack corporate hashes.txt 1000
hate_crack combinator hashes.txt 1000 # configured wordlists
hate_crack hybrid hashes.txt 1000 # configured wordlists
各項目は、それぞれのメニュー項目が要求する設定も受け付けます: