
TrustedSec チームによる、Hashcat を通じてクラッキング手法を自動化するツール。
```
___ ___ __ _________ __
/ | \_____ _/ |_ ____ \_ ___ \____________ ____ | | __
/ ~ \__ \\ __\/ __ \ / \ \/\_ __ \__ \ _/ ___\| |/ /
\ Y // __ \| | \ ___/ \ \____| | \// __ \\ \___| <
\___|_ /(____ /__| \___ >____\______ /|__| (____ /\___ >__|_ \
\/ \/ \/_____/ \/ \/ \/ \/
```
## インストール
ソースからのインストールが唯一サポートされている方法です。hate_crack は PyPI では**配布されていません**。`pip install hate-crack` は `0.0.0` のプレースホルダーに解決され、意図的に失敗してここに戻ってくるようになっています。この名前が確保されているのは、誰かが類似名で公開できないようにするためだけです — [`packaging/pypi-placeholder/`](https://github.com/trustedsec/hate_crack/blob/main/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` に留まり、これは共有、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` を手動で設定するには、追跡されているテンプレートをコピーします:
```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` はメインエントリポイントとして残り、これらのモジュールを統括します。
-------------------------------------------------------------------
## 参考文献と謝辞
このプロジェクトは、多くの外部プロジェクトやサービスに依存し、またそれらからインスピレーションを得ています。以下に感謝します:
- Hashview (http://github.com/hashview/)
- Weakpass (https://weakpass.com)
- Hashmob (https://hashmob.net)
-------------------------------------------------------------------
## 使用方法
`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 shim を作成し、リポジトリディレクトリから実行されるため、現在の作業ディレクトリに関係なく config とアセットが常に見つかります。
Config は以下でも検索されます:
- リポジトリルートとパッケージディレクトリ
- `~/.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
```
メニューの攻撃のほとんどは同じ方法で利用できます。これらにはハッシュファイルとハッシュタイプ以外は何も必要ありません:
```bash
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 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
```
それぞれは、メニュー項目が要求する設定も受け付けます:
```bash
# Fingerprint, tuned: escalate to 24-character fragments and cap the keyspace
hate_crack fingerprint hashes.txt 1000 --max-expander-len 24 \
--run-hybrid-on-expanded --keyspace-limit 50000000000
# Skip the fragment/wordlist combination step entirely
hate_crack fingerprint hashes.txt 1000 --no-dictionary-wordlist
# Override the configured wordlists (combinator needs at least two).
# Two wordlists use combinator, three use combinator3, more -- or any
# --separator -- use combinatorX, matching what the menu does.
hate_crack combinator hashes.txt 1000 --wordlist first.txt second.txt
hate_crack combinator hashes.txt 1000 --wordlist a.txt b.txt c.txt
hate_crack combinator hashes.txt 1000 --wordlist a.txt b.txt --separator -
hate_crack hybrid hashes.txt 1000 --wordlist rockyou.txt
# Corporate masks, lengths 8-12 only
hate_crack corporate hashes.txt 1000 --min 8 --max 12
# Smart mask, skipping templates over 10 billion candidates
hate_crack smartmask hashes.txt 1000 --keyspace-limit 10000000000
```
残りは、メニュー項目が要求する1つの入力を受け取ります:
```bash
# Bandrel methodology (comma-separate multiple companies)
hate_crack bandrel hashes.txt 1000 --company "Acme,Acme Corp"
# Permutation attack over a short targeted wordlist
hate_crack permute hashes.txt 1000 --wordlist names.txt
# Ad-hoc mask -- a literal mask or a .hcmask file, optionally incrementing
hate_crack adhocmask hashes.txt 1000 --mask '?u?l?l?l?d?d'
hate_crack adhocmask hashes.txt 1000 --mask masks/corporate.hcmask
hate_crack adhocmask hashes.txt 1000 --mask '?a?a?a?a?a?a?a?a' \
--increment-min 4 --increment-max 8
hate_crack adhocmask hashes.txt 1000 --mask '?a?a?a?a' --increment
# N-gram candidates from a corpus
hate_crack ngram hashes.txt 1000 --corpus corpus.txt --group-size 3
# Combipow passphrases (wordlist capped at 63 lines: it generates 2^n-1)
hate_crack combipow hashes.txt 1000 --wordlist words.txt
hate_crack combipow hashes.txt 1000 --wordlist words.txt --no-spaces
# Spoonman: basewords and rules derived from a corpus of known passwords
hate_crack spoonman hashes.txt 1000 --corpus previous-engagement.txt
hate_crack spoonman hashes.txt 1000 --corpus previous.txt --rule-coverage 95
# --rule-coverage accepts 50, 75, 95 or 99 -- the only capped rule files
# derived. Omit it for the full rule set.
# OMEN -- requires a model trained beforehand from the interactive menu
hate_crack omen hashes.txt 1000 --max-candidates 1000000
# Loopback: re-run rules against the plaintexts already cracked
hate_crack loopback hashes.txt 1000 --rules best64.rule
```
`fingerprint` は、素の形式がメニュー項目と同一でない唯一のコマンドです。メニューオプション 5 は常に展開されたフラグメントに対してハイブリッドパスを実行しますが、サブコマンドはデフォルトで `hcatFingerprint` 自身のデフォルトであるオフになります。メニューに合わせるには `--run-hybrid-on-expanded` を渡してください。
5 つのメニュー項目は、単一のフラグでは運べない入力が必要なため、依然として対話専用です。Markov ブルートフォース、Random Rules、Rosetta 攻撃、LLM 攻撃、および Extensive Pure_Hate 手法(単一の攻撃ではなく、他のものを統括するオーケストレーター)です。
#### 終了コード
| コード | 意味 |
|---|---|
| `0` | 攻撃が実行された |
| `1` | 不正な入力 — ハッシュファイルまたはワードリストの欠落、非数値のハッシュタイプ、不明なルールファイル名、範囲外の引数 |
| `2` | 不明なサブコマンド — このビルドの hate_crack には存在しない |
| `3` | `--exit-code-on-skip` を指定した場合のみ: カバレッジがすでにすべてのパスを確認済みだったため、何も起動されなかった |
終了コード `2` と終了コード `3` は、スクリプト化されたドライバーが「このバージョンではその攻撃を実行できない」と「それは冗長だった」を「実行されたが何も見つからなかった」と区別できるようにするものです。`--exit-code-on-skip` はオプトインであるため、カバレッジを有効にしても、それを導入する前のハーネスが失敗し始めることはありません。
-------------------------------------------------------------------
## トラブルシューティング
### エラー: 更新時の "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 より前のバージョンではこのリカバリ自体を実行できなかったため、一度だけ手動で行う必要があります。
### エラー: ビルドディレクトリが存在しません
次のようなエラーが表示される場合:
```
Error: Build directory /opt/hashcat/hashcat-utils does not exist.
Expected to find expander at /opt/hashcat/hashcat-utils/bin/expander.
```
これは、hate_crack のアセットがインストールされたパッケージにバンドルされていなかったことを意味します。
**パスの理解:**
- config.json の `hcatPath` → **hashcat バイナリの場所**を指す(オプション、PATH 内にあってもよい)
- `hashcat-utils/` と `princeprocessor/` → `make install` によってパッケージにバンドルされる
**解決策:**
Makefile を使用して再インストールします。これによりサブモジュールがビルドされ、ツールがインストールされます:
```bash
cd /path/to/hate_crack # the repository checkout
make install
```
**デフォルト設定 (config.json.example):**
ほとんどのユーザーはカスタマイズなしでデフォルトを使用できます:
- `hcatWordlists`: `./wordlists` (リポジトリルートまたは HOME/.hate_crack からの相対パス)
- `hcatOptimizedWordlists`: `./optimized_wordlists` (Quick Crack で使用されるディレクトリ。見つからない場合は `hcatWordlists` にフォールバック)
- `rules_directory`: `./hashcat/rules` (サブモジュールのルールを含む)
- `hcatTuning`: `` (空文字列 - デフォルトのチューニングフラグなし)
**config.json のカスタマイズ例:**
```json
{
"hcatPath": "/usr/local/bin", # Location of hashcat binary (optional, auto-detected from PATH)
"hcatBin": "hashcat", # Hashcat binary name
"hcatWordlists": "./wordlists", # Dictionary wordlist directory (relative or absolute)
"rules_directory": "./hashcat/rules", # Rules directory (relative or absolute)
"hcatTuning": "", # Additional hashcat flags (empty by default)
...
}
```
**設定の読み込み:**
- 各キーの優先順位: `os.environ` > そのキー自身のホームファイル(`.env` または `config.json`) > 組み込みのデフォルト
- 存在しないキーは組み込みのデフォルトにフォールバックする。`config.json.example` にはすべての `config.json` キーが記載されている
- 両方のファイルは、互いに独立して、次の順序で検索される: **リポジトリルート**、次に**インストール済みパッケージディレクトリ**、次に **`~/.hate_crack`**。最初に一致したものが優先される。2つのファイルが異なるディレクトリから取得されるのは正常である。
- 初回実行時には両方が作成される — `config.json` は `config.json.example` から、`.env` は組み込みのデフォルトから。古い `config.json` にまだ統合キーが含まれている場合、それらは新しい `.env` にコピーされ、hate_crack は `config.json` から削除すべきキーを通知する。hate_crack がそのファイル自体を編集することは決してない。
- 実行のたびに、hate_crack は実際に読み込んだ2つのファイルを出力する:
```
[*] config.json: /home/you/.hate_crack/config.json
[*] .env: /home/you/.hate_crack/.env
```
設定が「反映されていない」とデバッグする前に、この2行を読んでください。これらが存在するのは、検索順序における2つの罠のためです:
- **チェックアウトはホームディレクトリより優先される。** リポジトリルートが最初に検索されるため、ツールを実行する*任意の*チェックアウト内にある `.env` や `config.json` は `~/.hate_crack` にあるものより優先されます — そして、チェックアウトからツールを実行することが、そもそもそこにそれらのファイルが作成される原因そのものです。これが実際の `~/.hate_crack` 設定を隠してしまう場合、hate_crack は両方のパスを明示する3番目の `[!]` 行でそれを知らせます — その行は「以下のファイルは無視されている」という意味として扱い、2つ目の同等に有効な設定として扱わないでください。
- **カレントワーキングディレクトリは決して検索されない。** たまたま自分がいるディレクトリの `.env` は意図的に無視されます:エンゲージメントディレクトリは、誰も設定として意図していないファイルでいっぱいだからです。リポジトリルートか `~/.hate_crack` に置いてください。
### エラー: ref 'refs/heads/master' とマージしましたが、そのような ref はフェッチされませんでした
次のように表示される場合:
```
Your configuration specifies to merge with the ref 'refs/heads/master'
from the remote, but no such ref was fetched.
```
デフォルトブランチは `master` から `main` に名前が変更されました。修正するには:
```bash
git remote set-head origin -a
git branch -m master main
git branch --set-upstream-to=origin/main main
git pull
```
-------------------------------------------------------------------
### Makefile ターゲット
**デフォルト(完全インストール)** - サブモジュールをビルドし、依存関係をインストールし、ツールをインストールします:
```bash
make
# or explicitly:
make install
```
これは冪等です - すでにインストールされているツールはスキップされます。
**強制的にクリーン再インストール:**
```bash
make reinstall
```
**クイックアップデート** - サブモジュールを再ビルドし、ツールを再インストールします(変更をプルした後):
```bash
make update
```
**アンインストール** - OS の依存関係とツールを削除します:
```bash
make uninstall
```
**hashcat-utilsのみをビルド:**
```bash
make hashcat-utils
```
**テストを実行** - 必要に応じて HATE_CRACK_SKIP_INIT を自動的に処理します:
```bash
make test
```
**カバレッジレポート:**
```bash
make coverage
```
**クリーンビルド/テスト成果物:**
```bash
make clean
```
## 開発
### 開発環境のセットアップ
オプションの開発用依存関係(リンターおよびテストツールを含む)を指定してプロジェクトをインストールします:
```bash
make dev-install
```
### リンターと型チェックの実行
変更をプッシュする前に、これらのチェックをローカルで実行してください。すべてを実行するには `make lint` を使用するか、個別のチェックを実行します:
**Ruff (リンティングとフォーマット):**
```bash
make ruff
# or manually:
uv run ruff check hate_crack tests tools packaging hate_crack.py
```
自動修正の問題:
```bash
uv run ruff format hate_crack tests tools packaging hate_crack.py
uv run ruff check --fix hate_crack tests tools packaging hate_crack.py
```
**ty(型チェック):**
```bash
make ty
# or manually:
uv run ty check hate_crack
```
**すべてのチェックをまとめて実行:**
```bash
make lint
```
### テストの実行
テストはサブモジュールがビルドされていないことを自動検出し、`HATE_CRACK_SKIP_INIT=1` を自動的に設定します。
```bash
make test
```
または pytest を直接実行します:
```bash
uv run pytest -v
```
カバレッジあり:
```bash
make coverage
```
またはpytestで:
```bash
uv run pytest --cov=hate_crack
```
### Git Hooks (prek)
Git フックは [prek](https://github.com/j178/prek) (v0.3.3+) によって管理されています。フックをインストールするには:
```bash
prek install --hook-type pre-push --hook-type pre-commit
```
これは `prek.toml` で定義されたフックを、pre-commit の local-repo
TOML スキーマを使ってインストールします:
- **pre-push** (ローカルフック): ruff, ruff-format, ty, pytest, pytest-lima, bandit
- **pre-commit** (`pre-commit/pre-commit-hooks` から): trailing-whitespace,
end-of-file-fixer, check-yaml, check-merge-conflict, check-added-large-files,
detect-private-key
pre-commit の自動修正ツールはファイルをその場で書き換えるため、実行後は再度ステージしてコミットし直してください。
注: prek 0.3.3 はトップレベルに `repos = [...]` を期待します。旧形式の `[hooks.<stage>] commands = [...]` はサポートされていません。
### 矢印キーによるメニュー操作
メニューはデフォルトで古典的な番号付き `print()` + `input()` による選択を使用しており、複数桁のキーも受け付けます。
`simple-term-menu` による矢印キー操作を有効にするには、`HATE_CRACK_ARROW_MENU=1` を設定します。このモードでは、矢印キーで移動するか、オプション番号 (`99` のような複数桁も含む) を入力して Enter を押すことができます。それ以外を入力するとリストが絞り込まれます。矢印キーモードには TTY も必要なので、出力がパイプされている場合は無効のままです。
リストを表示してから入力を受け付けるピッカー (wordlists、rules、Weakpass リスト、Hashview wordlist と rule ID) は、`HATE_CRACK_ARROW_MENU` なしで、すべてのバックエンドで Up/Down を受け付けます。Up は最後に表示されたキーを入力し、もう一度 Up でその前のもの、Down で戻ります。代わりに番号、パス、または `1,3` のようなリストを入力することもできます。矢印で入力したキーの直後に `,`、`+`、`-` を入力するとそれを拡張します。`plain` および `rich` バックエンドでは、これはその 1 回のプロンプト用に表示されたキーを readline 履歴に読み込むことで機能するため、自身の履歴は後で元に戻され、リストのプロンプト内からはアクセスできません。
### 開発用依存関係
オプションの `[dev]` グループには以下が含まれます:
- **ty** - 静的型チェッカー
- **ruff** - 高速な Python リンター兼フォーマッター
- **pytest** - テストフレームワーク
- **pytest-cov** - カバレッジレポート
-------------------------------------------------------------------
共通オプション:
- `--download-hashview`: クラッキング前に Hashview からハッシュをダウンロードします。
- `--hashview`: ハッシュ、wordlist、ジョブを管理するための対話型 Hashview メニュー。
- `--hashview --help`: Hashview のコマンドラインオプションを表示します。
- `--weakpass`: Weakpass から wordlist をダウンロードします。
- `--rank`: 特定のティアの Weakpass wordlist のみを表示します (0=すべて、-1=S/A/B ティア)。ランク: 7=S, 6=A, 5=B, 4=C, 3=D, 2=E, 1=F。
- `--hashmob`: Hashmob.net から wordlist をダウンロードします。
- `--hashmob-masks`: Hashmob.net からマスクをダウンロードします。
- `--download-torrent <FILENAME>`: 特定の Weakpass torrent ファイルをダウンロードします。
- `--download-all-torrents`: キャッシュから利用可能なすべての Weakpass torrent をダウンロードします。
- `--wordlists-dir <PATH>` / `--optimized-wordlists-dir <PATH>`: wordlist ディレクトリを上書きします。
- `--pipal-path <PATH>`: pipal のパスを上書きします。
- `--restore-potfile`: 起動時に hashcat の POT ファイルから `<hashfile>.out` を再構築し、既存の内容を置き換えてから通常のメニューに進みます。このフラグがない場合、POT の参照は `.out` がまだ存在しないときにのみ実行されます。メニューオプション 93 は確認プロンプト付きで、オンデマンドで同じことを行います。
- `--maxruntime <SECONDS>`: 最大実行時間を上書きします。
- `--bandrel-basewords <PATH>`: bandrel basewords ファイルを上書きします。
- `--update`: 最新リリースに更新して再インストールします。リリースタグは `main` にあるため、チェックアウトが別のブランチにある場合は `main` に切り替えます。
- `--nightly`: 代わりに `nightly-dev` ブランチから最新の nightly に更新します。nightly は CI を通過していますが、カットリリースの一部ではありません。`--update --nightly` と書くこともできます。
- `--no-optimized-kernel` (または `--no-optimize`): 実行全体を通して hashcat に `-O` を渡しません。`config.json` の `optimizedKernelAttacks` を上書きし、`hcatTuning` に入れた `-O` をすべて取り除きます。設定には何も書き戻されないため、この実行にのみ適用されます。サブコマンドと併用する場合は、サブコマンドの前に置きます: `./hate_crack.py --no-optimize quick hashes.txt 1000 --wordlist words.txt`。
- `--debug`: デバッグログを有効にします (stderr に書き込みます)。
### Hashview 統合
hate_crack は、集中型のハッシュ管理と分散クラッキングのために Hashview と統合します。
#### 対話型メニュー
---
[Read more](https://github.com/trustedsec/hate_crack)