基本的な考え方は同じです。可能なパスワードの良い「断片」を作成し、連結すると、ランダムな文字セットよりも高い確率で適切なパスワードが得られます。 したがって、「ヒューマンファクター」として理解しているすべてをアルゴリズムに暗黙的に明け渡すことができます。
全体のパスワードの一部を把握し、最も一般的に使用される文字の組み合わせを選択することにより、優れた「ピース」を取得できます。 パスワードの開始数を明らかにするために、ブルートフォース、辞書、およびハイブリッド辞書攻撃を使用できます。
これに基づいて、「QWEasdf1 $」などのパスワードは安全と見なされるべきではありません(大きな文字、小さな文字、数字、特殊文字、十分な長さ-すべてうまくいきますか?)、それらは一連の可能な文字の組み合わせ(QWE、asdf、1、$ -4つのメタキャラクターのみ)。
実際には、自動化は次のスキームになりました。
- プログラムはハッシュのリストをロードします(かなり大きなセットが想定されます。これにより速度が低下せず、スキームが成功する可能性が高くなります)。
- 可能な組み合わせ(デジタルパスワード、制限された長さの文字、少数の特殊文字)の直接列挙があります。
- 次に、これらの辞書からの単語の連結を含め、監査人によって指定された辞書がチェックされます(「ihatethis」のような組み合わせをすばやく選択できるように)。
- 受信したパスワードは断片に分割され、各断片の発生確率が考慮され、「良い」辞書がコンパイルされます。
- 得られた辞書に従って、可能な単語の組み合わせの無限の検索が実行されます。
つまり、事前に準備された一連の辞書とハッシュのリストに加えて、他のことを知ったり、変更したり、構成したりする必要はありません。実際、多くのジョークがあった「プッシュトゥハック」スキームがあります。
私は1日でプログラムを書いたので、私自身は、それが何であれ、理想的な安定性と汎用性を期待していません。 ビデオカードのパワーを使用するには、CUDAテクノロジーとCUDA Utilities Toolkitが使用されます。
ここからソースをダウンロードできます: dl.dropbox.com/u/243445/md5h/src.7z
そして、Win32バイナリはこちらです: dl.dropbox.com/u/243445/md5h/MD5BLAST.exe
(developer.nvidia.com/cuda-toolkit-32-downloads#Windowsのcutil32ライブラリとCUDA Toolkitも必要です)
開始するには、ハッシュのリストを含むhash_list.txtファイルを作成する必要があります。
プログラムを開始すると、passwords.txtファイルにパスワードがゆっくり表示されます。 ハッシュとユーザーとパスワードのバインディングを作成しませんでしたが、本当に必要ですか?
CUDAテクノロジーに精通している場合、ビデオカードのGRIDおよびTHREADS定数を最適なパフォーマンスで変更することができます。 さらに、現在の設定では、プログラムには最大300メガバイトの空きビデオメモリが必要です(この値はITERS定数を使用して減らすことができます)。
GTX460で1秒あたり約100メガパスワードを取得します(平均パスワード長は15文字、ハッシュ数は約10,000)。