マルチスレッドを利用したJava言語のパスワード総当り解読プログラムを公開!
DL – MultithreadPasswordClear.zip
バグの修正は終わりましたが、どうやっても現状の知識では既存のソフトウェア以上の解読速度を出せませんでした。
しかも、最初は検索するパスワードを全て生成してからチェック処理を行っていたため、桁が多くなるとパスワードの生成に時間がかかり、速度の低下を招くとともに、メモリの消費も激しくJavaVMの初期設定メモリ範囲をオーバーしてしまいました。
なのでパスワード生成と同時にチェック処理を行うようにした結果、桁数増大の心配はなくなりましたが、全体の処理にかかる時間は大幅に増加し、桁数が少ない場合において顕著な速度低下が起こりました。
以上の結果を踏まえ、今回はこのソフトウェアは公開を中止いたします。
JavaのプログラムなのでJavaの動作環境が整っていない場合はダウンロードしておいてください。
ダウンロードしたファイルを解凍すると2つのファイルがあります。
- MPC.jar – 実行ファイル
- Readme.txt – 説明書…?
特に説明はしていないんですけどね。ですからこちらで詳細な解説をしていきます。
基本的にひとつのフレームに全て組み込んであります。
開始手順は簡単に書くと
- 参照ボタンをクリックし、対象ファイルを選ぶ
- パスワードに設定されていると思われる文字種を選ぶ
- 対象ファイルの文字コードを選ぶか入力する
- 探索する桁数の開始桁と終了桁を入力
- 実行するスレッド数を入力
- パスワードが見つかったら解凍するかチェック
- 実行ボタンをクリック
以上になります。
では詳細な説明を。
ファイルの選択
このダイアログでは拡張子がzipのファイルしか選択出来ないようになっています。
ZIPファイルを選択するとテキストフィールドに絶対パスが表示されます。
文字種の設定
パスワードに含まれる文字をチェックします。
- 数字 0~9
- 英小文字 a~z
- 英大文字 A~Z
文字コードの設定
zipファイルの文字コードを設定します。
Windows環境で圧縮されたZIPファイルならWindows-31Jで大丈夫です。MacやUNIXは…とりあえず「Shift_JIS」と「EUC_JP」をプリセットしてありますし、自分で入力することもできるのでなんとかしてください。
桁数の設定
探索範囲を設定します。
開始桁数から終了桁数まで1桁ずつ増やしながら検証していきます。
スレッド数の設定
マルチスレッドで動かすスレッド数を設定します。
CPUのスレッド数と同じにするのが一番良いと思います。
解凍の設定
実行ボタンの左にある「解凍する」チェックボックスは、パスワードが見つかった際にそのパスワードで対象ファイルを解凍するかどうかです。
チェックされていると自動で解凍されます。
解凍先は対象ファイルと同じ場所になります。
実行後
さて、実行してパスワードが見つかった場合は
このようなダイアログが表示されます。パスワード部分(スクリーンショットでは000)はテキストフィールドになっており、Ctrl+Cでコピーできます。
パスワードが見つからなかった場合は
このようなダイアログが表示されます。文字種や文字コード、桁数を変更してみてください。
備考
なお、このプログラムではマルチスレッドでのZIPファイル同時アクセスのために対象ファイルと同じファイルとMPC.jarと同じフォルダにスレッド数分コピーしています。
「tmp」という名前のフォルダがそれです。中にはスレッド数と同じ数だけコピーされたファイルが存在します。
一応プログラム終了時に削除するようにしようとしたんですが…上手く削除されない模様です。
MPC.jarを終了した後なら削除できるので、ディスクスペースが気になる方は各自での削除をお願いいたします。
誠に申し訳ございません。
あとがき
解説は以上です。最期まで読んでいただきありがとうございます。
バグや改善点などありましたらコメントに書いていただけますと参考に致します。
皆様のお役に立てれば幸いです。
コメント