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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pack — PACK (パスワード解析およびクラッキングキット) | Kitploit
ツール/GitHubGitHub/iphelix/pack
パスワードクラッキングパスワード攻撃ハッシュ分析ユーティリティとフレームワーク
GitHubiphelix/pack

pack

PACK (パスワード解析およびクラッキングキット)

リポジトリを見るウェブサイト
890174317年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

Password Analysis and Cracking Kit by Peter Kacherginsky (iphelix)

PACK(Password Analysis and Cracking Toolkit)は、パスワードリストの分析を支援するために開発されたユーティリティのコレクションです。マスク、ルール、文字セット、その他のパスワード特性のパターン検出を通じて、パスワードクラッキングを強化することを目的としています。このツールキットは、Hashcatファミリーのパスワードクラッカー用の有効な入力ファイルを生成します。

注: このツールキット自体はパスワードを解読することはできませんが、パスワードクラッカーの操作をより効率的にするために設計されています。

分析のためのパスワードリストの選択

ツールキットを使用する前に、パスワードリストの選択基準を確立する必要があります。人々がどのようにパスワードを作成するかを分析したいため、できるだけ多くの漏洩パスワードのサンプルを入手する必要があります。そのような優れたリストの1つが、RockYou.comの侵害に基づくものです。このリストは、同様のサイト(例:ソーシャルネットワーキング)で使用される一般的なパスワードに対して良好な結果を提供する、大規模で多様なコレクションを提供します。このリストから得られた分析は、特定のパスワードポリシーを持つ組織には有効でない場合があります。そのため、サンプル入力の選択は、ターゲットにできるだけ近いものにする必要があります。また、既に解読されたパスワードに基づくリストの取得は避けてください。それは、実際のユーザーではなく、リストを解読した個人によって使用されたルールやマスクの統計的偏りを生むためです。

StatsGen

実行できる最も基本的な分析は、提供されたリスト内のパスワードの最も一般的な長さ、文字セット、およびその他の特性を単に取得することです。以下の例では、約1400万のパスワードを含む'rockyou.txt'を使用します。次のコマンドラインでstatsgen.pyを起動します。

$ python statsgen.py rockyou.txt

以下は上記のコマンドの出力です。

                       _
     StatsGen #.#.#   | |
      _ __   __ _  ___| | _
     | '_ \ / _` |/ __| |/ /
     | |_) | (_| | (__|   < 
     | .__/ \__,_|\___|_|\_\
     | |                    
     |_| [email protected]


[*] Analyzing passwords in [rockyou.txt]
[+] Analyzing 100% (14344390/14344390) of passwords
    NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords

[*] Length:
[+]                         8: 20% (2966037)
[+]                         7: 17% (2506271)
[+]                         9: 15% (2191039)
[+]                        10: 14% (2013695)
[+]                         6: 13% (1947798)
...

[*] Character-set:
[+]             loweralphanum: 42% (6074867)
[+]                loweralpha: 25% (3726129)
[+]                   numeric: 16% (2346744)
[+]      loweralphaspecialnum: 02% (426353)
[+]             upperalphanum: 02% (407431)
...

[*] Password complexity:
[+]                     digit: min(0) max(255)
[+]                     lower: min(0) max(255)
[+]                     upper: min(0) max(187)
[+]                   special: min(0) max(255)

[*] Simple Masks:
[+]               stringdigit: 37% (5339556)
[+]                    string: 28% (4115314)
[+]                     digit: 16% (2346744)
[+]               digitstring: 04% (663951)
[+]                 othermask: 04% (576324)
...

[*] Advanced Masks:
[+]          ?l?l?l?l?l?l?l?l: 04% (687991)
[+]              ?l?l?l?l?l?l: 04% (601152)
[+]            ?l?l?l?l?l?l?l: 04% (585013)
[+]        ?l?l?l?l?l?l?l?l?l: 03% (516830)
[+]            ?d?d?d?d?d?d?d: 03% (487429)
...

注:--hiderareフラグを含めることで、出現頻度が1%未満の項目を表示しないようにし、外れ値を減らすことができます。

上記のリストからすぐにわかることは以下の通りです。

  • ほとんどのパスワードの長さは6〜10文字です。
  • パスワードの大部分は小文字+数字の文字セットです。
  • 明らかな最小または最大のパスワード複雑性はありません。
  • 分析されたパスワードは、「文字列の後に数字」という単純なマスクに従う傾向があります。

最後のセクション「Advanced Masks」には、Hashcat形式を使用した最も頻繁に出現するマスクが含まれています。各記号は次のように解釈できます。

?l - 小文字1文字
?u - 大文字1文字
?d - 数字1文字
?s - 特殊文字1文字

例えば、最初のマスク"?l?l?l?l?l?l?l?l"は、すべての小文字アルファベットパスワードに一致します。サンプルサイズを考慮すると、約4%のパスワードを解読できることになります。ただし、初期出力を生成した後、フィルタを使用してパスワードデータを絞り込むことに興味があるかもしれません。

フィルタの使用

RockYouユーザーが「stringdigit」単純マスク(文字列の後に数字)を使用してパスワードを選択する傾向を見てみましょう。

$ python statsgen.py ../PACK-0.0.3/archive/rockyou.txt --simplemask stringdigit -q --hiderare

[*] Analyzing passwords in [rockyou.txt]
[+] Analyzing 37% (5339556/14344390) of passwords
    NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords

[*] Length:
[+]                         8: 23% (1267260)
[+]                         7: 18% (981432)
[+]                         9: 17% (939971)
[+]                        10: 14% (750938)
[+]                         6: 11% (618983)
[+]                        11: 05% (294869)
[+]                        12: 03% (175875)
[+]                        13: 01% (103047)
[+]                        14: 01% (65958)

[*] Character-set:
[+]             loweralphanum: 88% (4720184)
[+]             upperalphanum: 06% (325941)
[+]             mixedalphanum: 05% (293431)

[*] Password complexity:
[+]                     digit: min(1) max(252)
[+]                     lower: min(0) max(46)
[+]                     upper: min(0) max(31)
[+]                   special: min(0) max(0)

[*] Simple Masks:
[+]               stringdigit: 100% (5339556)

[*] Advanced Masks:
[+]          ?l?l?l?l?l?l?d?d: 07% (420318)
[+]            ?l?l?l?l?l?d?d: 05% (292306)
[+]        ?l?l?l?l?l?l?l?d?d: 05% (273624)
[+]          ?l?l?l?l?d?d?d?d: 04% (235360)
[+]              ?l?l?l?l?d?d: 04% (215074)
...

出力の最上部には、分析された総パスワードの割合が指定されています。この場合、"stringdigit"マスクに一致するパスワードのみを解読することで、元の出力で表示された通り、全体の約37%しか回復できません。次に、このパスワードタイプのうち、小文字以外を使用しているのはわずか11%であることがわかります。したがって、このマスクに一致する小文字の文字列のみに集中するのが賢明です。最後に、「Advanced Mask」セクションでは、ほとんどの"stringdigit"パスワードが、その後に2桁または4桁の数字が続く文字列で構成されていることがわかります。上記の出力から得られた情報をもとに、ターゲットユーザーのパスワード生成パターンのイメージを作り始めることができます。

パスワードの長さ、マスク、および文字セット用に他にもいくつかのフィルタが利用可能です。

長さ: --minlength および/または --maxlength

単純マスク: --simplemask [numeric, loweralpha, upperalpha, mixedalpha, loweralphanum, etc.]

文字セット: --charset [digit, string, stringdigit, digitstring, digitstringdigit, etc.]

注:同じクラスの複数のフィルターは、カンマ区切りリストとして指定できます。

--simplemask="stringdigit,digitstring"

高度なマスクの保存

「Advanced Mask」セクションでは、全パスワードの1%を超えるパターンのみが表示されますが、以下のコマンドを使用して、特定の辞書に一致するパスワードマスクの完全なリストを取得して保存できます。

$ python statsgen.py rockyou.txt -o rockyou.masks

すべてのパスワードマスクとその頻度は、指定されたファイルにCSV形式で保存されます。もちろん、フィルタを提供して、指定されたパラメータに一致するマスクファイルのみを生成することもできます。出力ファイルは、次のセクションで説明するMaskGenツールへの入力として使用できます。

MaskGen

MaskGenを使用すると、Hashcatファミリーのパスワードクラッカーへの入力用に、パターンベースのマスク攻撃を作成できます。このツールは、上記のstatsgenで'-o'フラグを使用して生成された出力を使用して、マスクの複雑性、出現頻度、またはその比率(最適指数)でソートされた最も最適なマスク攻撃を生成します。

MaskGenをStatGenの出力のみを引数として実行してみましょう。

$ python maskgen.py rockyou.masks

                       _ 
     MaskGen #.#.#    | |
      _ __   __ _  ___| | _
     | '_ \ / _` |/ __| |/ /
     | |_) | (_| | (__|   < 
     | .__/ \__,_|\___|_|\_\
     | |                    
     |_| [email protected]


[*] Analyzing masks in [rockyou.masks]
[*] Using 1,000,000,000 keys/sec for calculations.
[*] Sorting masks by their [optindex].
[*] Finished generating masks:
    Masks generated: 146578
    Masks coverage:  100% (14344390/14344390)
    Masks runtime:   >1 year

留意すべき情報がいくつかあります。

  • 計算に使用されるデフォルトのクラッキング速度は1,000,000,000 keys/秒です。
  • デフォルトのソートモードは[optindex]で、これは--optindexフラグと同等です。
  • 146,578個のユニークなマスクが生成され、100%のカバレッジです。
  • 生成されたすべてのマスクの総実行時間は1年以上です。

ターゲット時間の指定

攻撃の作成と実行には通常時間制限があるため、maskgenでは攻撃に利用できる時間を指定でき、ソートモードに基づいて最も最適なマスクのコレクションを生成します。異なるソートモードとターゲット時間で少し試してみましょう。

$ python maskgen.py rockyou.masks --targettime 600 --optindex -q
[*] Analyzing masks in [rockyou.masks]
[*] Using 1,000,000,000 keys/sec for calculations.
[*] Sorting masks by their [optindex].
[!] Target time exceeded.
[*] Finished generating masks:
    Masks generated: 779
    Masks coverage:  56% (8116195/14344390)
    Masks runtime:   0:11:36


$ python maskgen.py rockyou.masks --targettime 600 --complexity -q
[*] Analyzing masks in [rockyou.masks]
[*] Using 1,000,000,000 keys/sec for calculations.
[*] Sorting masks by their [complexity].
[!] Target time exceeded.
[*] Finished generating masks:
    Masks generated: 5163
    Masks coverage:  31% (4572346/14344390)
    Masks runtime:   0:10:01
ツールをダウンロード