アップデート一覧に戻る
New releaseAug 1, 2026

hate_crack v2.23.0

TrustedSec チームによる、Hashcat を使用してクラッキング手法を自動化するためのツール。

共有
  ___ ___         __             _________                       __
 /   |   \_____ _/  |_  ____     \_   ___ \____________    ____ |  | __
/    ~    \__  \\   __\/ __ \    /    \  \/\_  __ \__  \ _/ ___\|  |/ /
\    Y    // __ \|  | \  ___/    \     \____|  | \// __ \\  \___|    <
 \___|_  /(____  /__|  \___  >____\______  /|__|  (____  /\___  >__|_ \
       \/      \/          \/_____/      \/            \/     \/     \/

インストール

ソースからのインストールが唯一サポートされている方法です。hate_crack は PyPI では配布されていません。pip install hate-crack は意図的に失敗する 0.0.0 のプレースホルダーに解決され、ここへ戻ってくるようになっています。この名前が確保されているのは、誰かが類似名で公開できないようにするためだけです — packaging/pypi-placeholder/ を参照してください。

1. hashcat のインストール

hashcat がインストールされ、PATH から利用できる必要があります:

Ubuntu/Kali:```bash sudo apt-get install -y hashcat

macOS(Homebrew):```bash
brew install hashcat

または、https://hashcat.net/hashcat/ からビルド済みバイナリをダウンロードし、config.json の hcatPath をその場所に設定します。

2. hate_crack のダウンロード

サブモジュールを含めてクローンします(hashcat-utils、princeprocessor、pcfg_cracker、Corporate_Masks、およびオプションで omen に必要):```bash git clone --recurse-submodules https://github.com/trustedsec/hate_crack.git cd hate_crack

サブモジュールなしでクローンした場合は、それらを初期化します:```bash
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 に残ります。これは共有、差分比較、自分のノートへのチェックインが安全です。また、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 を設定するには、追跡されているテンプレートをコピーします:```bash 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` で再生成してください。

### 3. 依存関係と hate_crack のインストール

最も簡単な方法は `make`(または `make install`)を実行することです。これは OS を自動検出し、以下をインストールします:
- 外部依存関係(p7zip、transmission-daemon / transmission-remote)
- サブモジュール(hashcat-utils、princeprocessor、pcfg_cracker、およびオプションで omen)をビルドし、データのみの Corporate_Masks マスクセットをチェックアウト
- uv 経由の Python 依存関係と `~/.local/bin/hate_crack` にある CLI シム```bash
make

これは冪等です - すでにインストールされているツールはスキップされます。クリーンな再インストールを強制するには:```bash make reinstall

**または依存関係を手動でインストール:**

### 外部依存関係
これらは特定のダウンロード/展開フローに必要です:

- `7z`/`7za` (p7zip) — `.7z` アーカイブの展開に使用されます。
- `transmission-daemon` / `transmission-remote` — Weakpass トレントのダウンロードに使用されます。

手動インストールコマンド:

Ubuntu/Kali:```bash
sudo apt-get update
sudo apt-get install -y p7zip-full transmission-daemon

macOS (Homebrew):```bash brew install p7zip transmission-cli # provides transmission-daemon and transmission-remote

次に、Pythonの依存関係とCLIシムをインストールします:```bash
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 を実行できます:```bash hate_crack

or with arguments:

hate_crack <hash_file> <hash_type> [options]

または、`uv` 経由で実行します:```bash
uv run hate_crack.py <hash_file> <hash_type>

ツールとして実行(推奨)

リポジトリのルートから make を使用してインストールします。これによりサブモジュールがビルドされ、アセットがバンドルされます:```bash 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` の shebang を使用します。実行可能にしてから実行してください:```bash
chmod +x hate_crack.py
./hate_crack.py

Pythonを直接使用することもできます:```bash python hate_crack.py

### 非対話型 / スクリプトによる使用

自動化のために、メニューをバイパスして単一の攻撃を直接起動できます。攻撃名が最初の引数で、その後にハッシュファイルとhashcatのハッシュタイプが続きます。前処理のプロンプト(コンピューターアカウントのフィルタリング、LM優先のブルートフォース、重複アカウントの重複排除)は、このモードではデフォルトを自動的に受け入れます。プロセスは成功時に `0` で終了し、エラー時(ハッシュファイルの欠落、非数値のハッシュタイプ、ワードリストの欠落、または不明なルールファイル名)には非ゼロで終了します。```bash
# 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

トラブルシューティング

エラー: 更新時に "would clobber existing tag"

古いクローンでは更新を拒否し、次のような行が長く出力されることがあります:``` ! [rejected] v2.5.0 -> v2.5.0 (would clobber existing tag)

これは2026年7月より前に作成されたクローンに影響します。公開履歴はその時点で書き換えられ、コミットされるべきではなかったいくつかのファイルが削除されたため、すべてのコミットに新しいIDが付与されました。そのため、古いクローンのタグはこのリポジトリにもはや存在しないオブジェクトを指しており、gitは既に持っているタグの移動を拒否します。チェックアウトに問題はなく、クラッキングデータが危険にさらされることもありません。

一度限りのリセットで復旧してください。これはチェックアウト内のローカルコミットと編集を破棄するので、gitで追跡されているもの(追跡されていない`config.json`とは異なります)をカスタマイズしている場合は、まずブランチにコミットしてください:```bash
cd /path/to/hate_crack
git fetch --tags --force origin
git checkout -B main origin/main
make install

--force はここではタグを更新するだけで、コミットには触れません。その後は組み込みのアップデーターが通常どおり動作します。2.18 より前のバージョンではこの復旧を自身で実行できなかったため、一度だけ手動で行う必要があります。

エラー: ビルドディレクトリが存在しない

カテゴリ