パスワードが分からない!
昔アーカイブしたパスワード付きdmgファイルのパスワードがわからなくなってしまいました…。何とかしてクラック、いや、パスワードリカバリをしなければいけません。 おまけに手元にあるのは古いMacbook Airなのであんまりぶんぶんファンを回すとぶっ壊れてしまいそうです。それは嫌だ。というわけで、どっかクラウド上でクラックできないか、というのが本題です。
今ならAmazon Web Serviceが一年間無料
によると、最小構成みたいなものが1年間無料で使えるみたいです。これはこの手のものを試すには持ってこいです。なのでいまさら初めてEC2を触ってみます。
Amazon Webserviceに登録してEC2を使えるようにする
これは上記からうまくやるとすぐに登録できます。後々の課金用に住所とか名前とかクレジット番号とかが必要です。課金するつもりはありませんが。
EC2インスタンスを作る
というわけで、登録した後から。
このEC2を選択します。
次の画面でスクリーン中程のLaunch Instanceを選択します。
その次は作るインスタンスのOS構成を選択します。一番上のAmazon標準を選びましょう。
つぎはインスタンスの種類を選択します。無料なマイクロ(一番弱っちいやつ)を選びましょう。
マイクロを選択したら確認画面へ行きましょう。Review and Launchです。
そうするとストレージとかもろもろ全部設定されているので、このままLaunchで起動できます。このあとキーペアの設定があるので、適当に打ち込んでキーペアをダウンロードしましょう。キーペアファイルはsshコマンドでログインするときに必要です。
インスタンス作成が完了しました。
Launch Instanceが画面の真ん中にある画面左側にはダッシュボードがあります。Instancesで作ったインスタンスの一覧が見られます。これで作成完了です。
EC2インスタンスに接続する
インスタンス一覧画面のPublic DNSが接続に必要なホスト情報です。キーペアファイルをどこかローカルディスク上に用意してください。
シェルからログインしましょう。
$ chmod 400 test.pem.txt $ ssh -i test.pem.txt ec2-user@ec2-XXXXXXXXX.us-west-2.compute.amazonaws.com
こんな感じで接続できるはずです。まずキーペアファイルを400に設定しましょう。そうしないとログインできません。そのあとsshでログインします。
クラックに必要なソフトウェアJohnTheRipperをインストールする
JohnTheRipperのCommunity Editionはgithubじょうで開発が続けられています。
まずはコンパイルに必要なパッケージをインストールしましょう。
$ sudo yum install gcc $ sudo yum install openssl-static.x86_64
これでパッケージがインストールできるはずです。JohnTheRipperをダウンロードしてコンパイルしましょう。
$ git clone https://github.com/magnumripper/JohnTheRipper.git
URLについては変更される可能性があるので上記githubページを参考にしてください。
クローンし終わったらクローンしたディレクトリ内のsrcディレクトリに移動しましょう。
$ cd JohnTheRipper/src
ここでconfigureしてmakeすればコンパイルできます。
$ ./configure && make
これでバイナリがsrcの隣のrunディレクトリにできているはずです。
$ cd ../run $ ./john --test
テストしてみましょう。準備ができたらいよいよdmgのクラックです。
dmgをクラックしてみる。
runディレクトリにあるdmg2johnユーティリティでハッシュを生成して、そのハッシュをクラックする形になっています。
$ ./dmg2john ~/Desktop/folder.dmg > folder.dmg.txt
こんな感じでfolder.dmg.txtをつくって、このテキストファイルをクラックします。
$ ./john folder.dmg.txt
これでクラックスタートです。時間が経つとパスワードが見つかる…はず! GNU screenを使うとログアウトしてもセッションを保っておけるので便利です。
$ ./john folder.dmg.txt Warning: detected hash type "dmg", but the string is also recognized as "dmg-opencl" Use the "--format=dmg-opencl" option to force loading these as that type instead Using default input encoding: UTF-8 Loaded 1 password hash (dmg, Apple DMG [PBKDF2-SHA1 128/128 AVX 4x2 3DES/AES]) Press 'q' or Ctrl-C to abort, almost any other key for status 0g 0:00:03:50 17.35% 1/3 (ETA: 20:04:11) 0g/s 25.32p/s 25.32c/s 25.32C/s Users/users/XXXXXX/desktop/folder.dmga..Ufoldera ... a (/Users/XXXXXX/Desktop/folder.dmg) 1g 0:00:35:11 DONE 2/3 (2015-09-06 20:17) 0.000473g/s 25.43p/s 25.43c/s 25.43C/s 777..mmm Use the "--show" option to display all of the cracked passwords reliably Session completed
見つかりました。"a"がパスワードです。これはテスト用に作ったdmgファイルです。
一回クラックを止めるにはqもしくはCtrl-cでプログラムをストップさせる。再開時には必ず
$ ./john --restore
ではじめること。ファイル名等は最後のセッションの記録に含まれているので指定しなくてよいです。新しく探索を始めると最後のセッション情報は消えてしまいます。気をつけましょう。
まとめ
これでdmgのパスワードを忘れても大丈夫!ただし複雑なパスワードをクラックするには天文学出来な時間がかかります。セキュリティ万歳!