Have you forgotten ssh key passphrase before? I forgot it twice. 設定したパスフレーズではなぜか使えなかったり、パスフレーズをどこに控えたかを忘れてしまったり。 そんなときに、とても時間がかかりますがブルートフォースでパスワードを当てる方法があります。
使うもの
- john the ripper
- 総当たりをするための候補を作るプログラム。 linux だとパッケージに入っていることが多いです。
- ssh-privkey-crack.c
- キーの検証を行うプログラム。 コンパイルできる環境が必要です。
Procedure
Download
ssh-privkey.crack.c
from lusas project. (執筆時にはダウンロードできていたのですが、時点で同じようにダウンロードできるかはわかりません。)Compile
ssh-privkey-crack.c
. コンパイルの方法はプログラム内のコメントに書かれています。 私の環境ではgcc -Wall -o ssh-privkey-crack ssh-privkey-crack.c -lssl -lcrypto
でコンパイルできました。 コンパイル後のファイルには実行権限をつけておきます。john the ripper をダウンロードして設定ファイルを編集します。 In my environment (ubuntu),
/etc/john/john.conf
was the default configuration. それに追記する形で設定を追加しました。123456[Incremental:Pattern1]File = $JOHN/digits.chrExtra = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZMinLen = 3MaxLen = 10CharCount = 62総当たりをする場合の設定です。 File の指定は存在する chr ファイル を指定し、 Extra に chr ファイル 外 の文字で使用する文字を記述します。 chr ファイル の作り方がいまいち把握できていないのでこのようにしました。 MinLen 、 MaxLen はパスフレーズの長さの範囲を指定します。 CharCount で使用する文字の総数を記述します。 今回は 数字と大文字、小文字なので 62 です。 chr ファイルは私の環境だと
/usr/share/john/
にありました。- コマンド
john -stdout -incremental:Pattern1 | ./ssh-privkey-crack ssh-private-keyfile
を実行します。 最後に “-v” をつけると詳細なアウトプットが出せます。 (実際のところ MinLen = 3, MaxLen = 10, CharCount = 62 だとまず終わらないです。)