John the Ripper

John the Ripperは、自由なパスワードクラッキングソフトウェアツールである。元々はUNIX向けに開発され、15の異なるプラットフォームで実行することができる。これは多数のパスワードクラッカーを1つのパッケージに統合し、パスワードハッシュの種類を自動的に検出することができ、カスタマイズできるパスワードクラッカーを含むので、最も頻繁に使用されるパスワードのテスト及び解読のためのプログラムの1つである。様々なUNIXのバージョンで最も一般的に見られるのパスワードハッシュ、Kerberos AFS及びWindows NT/2000/XP/2003のLMハッシュを含む様々な暗号化されたパスワード形式に対して実行することができる。追加のモジュールによってにMD4に基づくパスワードハッシュとLDAPやMySQLなどに保存されているパスワードを含める機能が拡張された。
出力例.
以下はDebian環境での出力例である。
$ cat pass.txt
user:AZl.zWwxIh15Q
$ john -w:password.lst pass.txt
Loaded 1 password hash (Traditional DES [24/32 4K])
example (user)
guesses: 1 time: 0:00:00:00 100% c/s: 752 trying: 12345 - pookie
最初の行は「codice_1」の内容を表示するコマンドである。次の行はファイルの内容、つまりユーザー（codice_2）とそれに関連付けられたハッシュ（codice_3）である。3行目は「codice_4」フラグを使用してJohn the Ripperを実行している。「codice_5」はプログラムが解読するハッシュに対して使用する単語の一覧が入ったテキストファイルのファイル名である。codice_1はJohnに処理させたいファイルである。
次に、Johnからの出力が確認できる。1つのパスワードハッシュ（「cat」コマンドで見たハッシュ値）とJohnによって推測されたハッシュの種類（従来のDES）がロードされている。また、この試行は0秒で1つの推測が行われ、推測率は100%であることが分かる。
攻撃の種類.
Johnが使用できる攻撃の種類の1つは辞書攻撃である。これは、テキスト文字列のサンプルを取得し、検査対象のパスワードと同じ形式で暗号化して、その出力を検査対象のパスワードと比較する。また、辞書の単語に様々な変更を加えて、これを試すこともできる。これらの変更の多くは、関連するプレーンテキストを変更し、ハッシュ値に対して変化を確認するJohnのシングルアタックモードでも使用される。
Johnは総当たり攻撃も提供している。この攻撃では、プログラムは全てのプレーンテキストに対して暗号学的ハッシュ関数を適用して、入力されたハッシュ値と比較する。Johnは文字の出現頻度を格納したテーブルを使用して、より頻繁に使用される文字を含むプレーンテキストを最初に試す。この攻撃は、辞書の単語リストにないパスワードを解読する場合に役に立つが、実行には長い時間が必要になる。