Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
HashcatRosetta — Hashcatルールアナライザーおよびインタープリター - hashcatルール構文を解読するためのロゼッタストーン | Kitploit
ツール/GitHubGitHub/bandrel/hashcatrosetta
パスワードクラッキングパスワード攻撃ハッシュ分析スクリプトと自動化ユーティリティとフレームワーク学習と教育AIセキュリティ
GitHubbandrel/hashcatrosetta

HashcatRosetta

Hashcatルールアナライザーおよびインタープリター - hashcatルール構文を解読するためのロゼッタストーン

リポジトリを見る
13111123日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

| | | | __ _ | | ___ __ | || _ \ ___ ___ | || | __ _ | || |/ / __| '_ \ / __/ _ | __| |) / _ / __|/ _ \ __| / ` | | _ | (| _ \ | | | (| (| | || _ < () __ \ / || || (| | || ||_,|/| ||____,|_|| __/|/___|_|__,|

パスワードクラッキングルールのロゼッタストーンを解読する

# HashcatRosetta

hashcatのデバッグモード4およびモード5の出力ファイルを分析し、最も効率的なルールを特定し、パスワードクラッキング攻撃中に使用されるベースワードの頻度パターンを追跡するために設計されたPythonプロジェクトです。

## 機能

- **hashcatデバッグファイルの解析** (`--debug-mode 4` および `--debug-mode 5`)、ベースワードとルールの自動抽出付き
- **候補をソースワードリストに帰属** (モード5)、ワードリストごとの統計用
- **複数の指標によるルール効率の追跡**:
  - 適用頻度 (最もよく適用されるルール)
  - ベースワードの広がり (最も多くのユニークなベースワードに適用されるルール)
  - 候補生成 (最も多くのユニークな候補を生成するルール)
- **ベースワードパターンの監視**、詳細な出現ログと統計付き
- **詳細レポートの生成**、ルールとベースワードの分析付き
- **分析結果のエクスポート**、さらなる処理のためのJSONまたはCSV形式
- **コマンドラインインターフェース**、簡単な分析とレポート用

## インストール

### uvを使用する場合 (推奨)

[uv](https://github.com/astral-sh/uv)を使用している場合、インストールせずに実行できます:

```bash
# リポジトリをクローン
git clone https://github.com/bandrel/HashcatRosetta.git
cd HashcatRosetta

# モジュールとして実行 (推奨)
uv run python -m hashcat_rosetta --help

# またはインストールされたコマンドを使用
uv run hashcat-rosetta --help

ソースから

uv tool install git+https://github.com/bandrel/HashcatRosetta.git

開発依存関係付き

開発ツールは dev 依存関係グループにあります。

# uvを使用 (デフォルトでdevグループをインストール)
uv sync

# pipを使用 (25.1+)
pip install -e . --group dev

クイックスタート

デバッグファイルの分析

hashcatデバッグファイルを分析 (デフォルトでサマリーを表示):

hashcat-rosetta debug_output.txt

頻度順にトップルールを表示:

hashcat-rosetta debug_output.txt --rules --top 10 --metric frequency

他の指標でトップルールを表示:

hashcat-rosetta debug_output.txt --rules --metric basewords
hashcat-rosetta debug_output.txt --rules --metric candidates

複数回出現するベースワードを表示:

hashcat-rosetta debug_output.txt --basewords --top 10

トップワードリストを表示 (デバッグモード5のみ):

hashcat-rosetta debug_output.txt --wordlists --top 10

ワードリストごとの詳細統計を表示 (ユニークなベースワード、候補、ルール):

hashcat-rosetta debug_output.txt --wordlists --top 10 --detail

--wordlists の出力は --rules を反映します: Top N Wordlists ヘッダーに続き、 番号付きの Wordlist: <name> (<count>) 行が表示されます。モード5のファイルを 出力フラグなしで分析した場合、デフォルトのサマリーにも Wordlist Statistics セクションが含まれます。

自動検出ではなく特定のデバッグモードを強制:

hashcat-rosetta debug_output.txt --debug-mode 5 --wordlists

詳細なベースワード分析を表示:

hashcat-rosetta debug_output.txt --basewords --top 10 --detail --min-occurrences 2

完全な分析レポートをエクスポート:

hashcat-rosetta debug_output.txt --export report.json --format json
hashcat-rosetta debug_output.txt --export report.csv --format csv

ルールの説明

hashcatルールが何をするかをステップバイステップで説明:

hashcat-rosetta --explain "c$1" --baseword admin
hashcat-rosetta --explain "u$!" --baseword myword

自然言語によるマスクの生成

ローカルLLMを使用して英語の説明からhashcatマスクを生成:

hashcat-rosetta --mask "The word 'Summer' followed by six digits."

出力:

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

生成されたマスクをファイルに保存:

hashcat-rosetta --mask "The word 'Summer' followed by six digits." -o masks.hcmask

他の説明からマスクを生成:

hashcat-rosetta --mask "a capitalized season, two digits, and a special char"
hashcat-rosetta --mask "year 2020-2025 followed by exclamation or question mark"

マスク生成機能は、OpenAI互換のチャットエンドポイントを実行するローカルOllamaサーバーを使用します。デフォルトでは http://localhost:11434 に接続し、モデル gemma3:27b を使用します (以下を参照)。これらは環境変数またはCLIフラグで設定できます:

# 環境変数を使用
OLLAMA_HOST=http://192.168.1.100:11434 OLLAMA_MODEL=llama2:70b \
  hashcat-rosetta --mask "your description here"

# CLIフラグを使用 (環境変数を上書き)
hashcat-rosetta --mask "your description" --ollama-host http://custom.host:11434 --model llama2

セキュリティに関する注意: マスクの説明は、設定したOllamaエンドポイント (デフォルトでは localhost、または --ollama-host/OLLAMA_HOST が指す場所) にのみ送信され、クラウドプロバイダーには決して送信されません。OpenAI SDKはそのエンドポイントに対するHTTPクライアントとして純粋に使用されます。データやAPIキーが api.openai.com に送信されることはありません。

なぜ gemma3:27b なのか?

デフォルトは scripts/benchmark_mask_models.py によって選択されます。これは14個の固定された --mask スタイルのプロンプト (カスタム文字セットの後方参照やカテゴリ想起プロンプト — 聖書の書名、聖書の節参照、ヨーロッパの首都 — を含む) を、ローカルにインストールされたすべての候補モデルに対して実行し、各応答を3つの方法で評価します:

  • 決定論的ゲート。 各プロンプトには手書きのチェッカーがあります (正しいキースペース、正しいトークン数、重複提案なしなど)。ハード失敗 は、モデルの応答が有効なマスクに解析できなかったこと (不正なJSON、応答しないサーバー) を意味します。ソフト失敗 は、解析は正常にできたが要求を満たさなかったこと (桁数が間違っている、非母音のカスタム文字セットなど) を意味します。ソフト失敗したプロンプトも判定され、黙って除外されることはありません。
  • キースペースのクロスチェック。 検証されたすべての提案のキースペースは、インストールされている場合、hashcat-utilsの mp64 (maskprocessor) に対して独立に検証されます。これは generate_masks() 自体が本番環境で各提案に対して実行するのと同じチェックであるため、ここでのベンチマークのハード失敗は、実際の --mask の使用でも拒否されたことを意味します。
  • LLMジャッジ。 別のホスト上のモデル (2台目のマシン上の gemma3:12b、自己採点バイアスを避けるために候補ではないものを特別に選択) が、各応答を元の要求をどれだけ満たしているかについて1〜5で採点します。要求は思考を有効にして送信されます。遅いモデルはどちらにしても往復時間がかかるためです。

推奨されるデフォルトは、ハード失敗がゼロで、平均ジャッジスコアが4以上の最小のモデル です。以前のラウンドから引き継がれた3つの最終候補を、14プロンプトの完全なセットに対して再実行した結果:

modelsizehard failsmean scoretime
gemma3:27b16.2 GB04.1180s
dengcao/Qwen3-30B-A3B-Instruct-2507:latest17.4 GB14.5176s
laguna-xs-2.1:latest18.9 GB24.7730s

gemma3:27b は3つの中で唯一ハード失敗がゼロであるため、最高の生スコアではないにもかかわらず選ばれました — dengcao と laguna-xs-2.1:latest はより高いスコアでしたが、それぞれ少なくとも1つのプロンプトで完全に失敗しました (また laguna-xs-2.1:latest ははるかに遅く、730秒対約180秒で、それ自体の非常に大きなネイティブコンテキストウィンドウによるものです)。

以前のスイープラウンドのいくつかのQwen3ファミリーモデル (qwen3:8b/30b/32b、qwen3.5:9b/27b) は、明確な失敗モードを示しました: 隠れた「思考」トークンと巨大なネイティブコンテキストウィンドウが、--mask 規模のハードウェアで数分から30分のハングを引き起こしました。以前のデフォルトである qwen3.6:35b-a3b も同じ理由で置き換えられました (CHANGELOG.md を参照)。

uv run python scripts/benchmark_mask_models.py で自分でスイープを再実行できます — 不足している候補を取得し、更新された推奨事項を出力します。

Python APIの使用

from hashcat_rosetta import DebugAnalyzer

analyzer = DebugAnalyzer()

# デバッグファイルを分析
result = analyzer.analyze_debug_file('debug_output.txt')
print(f"Total entries: {result['total_entries']}")
print(f"Unique rules: {result['unique_rules']}")
print(f"Unique basewords: {result['unique_basewords']}")

# 頻度順にトップルールを取得
top_rules = analyzer.get_top_rules_by_frequency(10)
for rule, count in top_rules:
    print(f"Rule: {rule}, Applications: {count}")

# トップベースワードを取得
top_basewords = analyzer.get_top_basewords_by_frequency(10)
for baseword, count in top_basewords:
    print(f"Baseword: {baseword}, Occurrences: {count}")

# 複数回出現するベースワードを取得
frequent_basewords = analyzer.get_basewords_with_min_occurrences(2)
print(f"Basewords appearing 2+ times: {len(frequent_basewords)}")

# 特定のベースワードに関する詳細情報を取得
detail = analyzer.get_baseword_detail('password')
print(f"Rules applied to 'password': {detail['unique_rules']}")
print(f"Occurrences: {len(detail['occurrences'])}")

# 完全な分析をエクスポート
export = analyzer.export_to_dict()

デバッグファイル形式

アナライザーは両方のhashcatデバッグ出力形式を自動検出してサポートします:

コロン区切り形式 (hashcatのネイティブ形式)

baseword:rule:candidate
COMPUTER:} } } } t:retupmoc
EXAMPLE:sa@ se3 so0:3x@mpl3
admin:$1 $5 c ^@:@Admin15

各行には3つの コロン区切り フィールドが含まれます:

  • baseword: 元の辞書単語
  • rule: 適用されたhashcatルール
  • candidate: ルール適用後の結果のパスワード候補

hashcatは常にこの形式を出力してきました (src/debugfile.c は orig、:、rule、:、mod を書き込みます)。

スペース区切り形式 (レガシー)

baseword rule candidate
password c P@ssword
password u PASSWORD
admin l admin
letmein [ etmein

各行には3つの スペース区切り フィールドが含まれ、意味は上記と同じです。これは古いレガシー形式で、このパーサーも受け入れます。

注意: アナライザーはファイルがどの形式を使用しているかを自動検出します。手動設定は不要です!

デバッグモード5形式 (ワードリスト帰属)

hashcat --debug-mode 5 は、コロン区切りの各行に末尾の wordlist フィールドを追加します:

baseword:rule:candidate:wordlist
password:c:P@ssword:/opt/wordlists/rockyou.txt
admin:l:admin:/opt/wordlists/rockyou.txt
letmein:[:etmein:<stdin>
ツールをダウンロード