John the Ripper を使って、ロックされたメモのパスワードを取り戻す手順
はじめに:パスワードを忘れるという悪夢 😱
Apple Notesは、アイデアを書き留めたり、情報を整理したりするのに非常に便利なツールです。しかし、セキュリティを高めるためにメモにパスワードを設定し、そのパスワードを忘れてしまった場合、重要な情報にアクセスできなくなる可能性があります。
Appleは公式には、忘れたパスワードを回復する方法を提供していません。パスワードをリセットすることはできますが、それは新しく作成するメモに適用されるだけで、既にロックされた古いメモを開くことはできません。これは、多くのユーザーにとって悪夢のような状況です。
しかし、諦めるのはまだ早いです!強力なパスワード回復ツールである John the Ripper と、その仲間である applenotes2john スクリプトを使えば、失われたパスワードを取り戻せる可能性があります。
必要なものリスト ✅
パスワード回復作戦を開始する前に、以下のものが必要です。
- John the Ripper (JtR): オープンソースのパスワードクラッキングツールです。多くのLinuxディストリビューションに含まれているか、公式サイトからダウンロードできます。macOSやWindows版もあります。
- applenotes2john.py スクリプト: John the Ripper の Jumbo バージョンに含まれるPythonスクリプトです。Apple Notes のデータベースからパスワードハッシュを抽出する役割を担います。通常、JtRのインストールディレクトリ内の `run` フォルダにあります。GitHubのリポジトリからも入手できます。
- Python: applenotes2john.py スクリプトを実行するために必要です。macOSには通常プリインストールされていますが、Windowsの場合は別途インストールが必要です。
- NoteStore.sqlite ファイル: パスワードでロックされたメモの情報が含まれるSQLiteデータベースファイルです。このファイルの場所を見つけることが最初の関門となります。
- (推奨)強力なコンピュータ: パスワードクラッキングは計算量が多く、時間がかかる場合があります。特に複雑なパスワードの場合、高性能なCPUやGPUがあると有利です。
- (推奨)パスワードリスト(辞書): よく使われるパスワードや、心当たりのある単語などを集めたリストがあると、クラッキングの効率が上がります。
ステップ1:宝の地図を手に入れろ!NoteStore.sqliteを探す 🗺️
パスワード回復の鍵となる `NoteStore.sqlite` ファイルは、通常、以下の場所に隠されています。
macOSの場合
Finderを開き、「移動」メニューから「フォルダへ移動…」を選択し、以下のパスを入力します。
~/Library/Group Containers/group.com.apple.notes/
このフォルダ内に `NoteStore.sqlite` があるはずです。見つけたら、安全な場所にコピーしておきましょう。元のファイルを直接操作するのは避けるのが賢明です。
注意: iCloud Notesを使用している場合、データの一部が別の場所 (`~/Library/Containers/com.apple.Notes/` など) にキャッシュされている可能性もありますが、主要なデータはこの `group.com.apple.notes` フォルダにあることが多いです。macOSのバージョンによって場所が変わる可能性もあります。
iOSデバイスのバックアップから
iPhoneやiPadのメモを回復したい場合、MacやPCに作成したiTunes(またはFinder)のバックアップから `NoteStore.sqlite` を抽出する必要があります。
バックアップファイルは通常、難解な名前のフォルダに保存されており、直接探すのは困難です。
- Macの場合: `~/Library/Application Support/MobileSync/Backup/`
- Windowsの場合: `%APPDATA%\Apple Computer\MobileSync\Backup\` または `%USERPROFILE%\Apple\MobileSync\Backup\`
これらのバックアップフォルダ内から `NoteStore.sqlite` を見つけ出すには、専用のiPhoneバックアップ抽出ツールを使用するのが一般的です。または、`applenotes2john.py` の元になったツールである Apple Cloud Notes Parser などがiTunesバックアップフォルダを直接指定して処理できる場合があります。
ステップ2:魔法の呪文を唱えよ!applenotes2johnでハッシュを抽出 ✨
`NoteStore.sqlite` ファイルを手に入れたら、いよいよ `applenotes2john.py` の出番です。このスクリプトは、データベースファイルからJohn the Ripperが理解できる形式の「ハッシュ」を抽出します。ハッシュとは、元のパスワードを特定の方法で変換したもので、直接パスワードが書かれているわけではありません。
ターミナル(またはコマンドプロンプト)を開き、`applenotes2john.py` スクリプトがあるディレクトリに移動するか、スクリプトへのフルパスを指定して実行します。
基本的なコマンドは以下のようになります。
python /path/to/john/run/applenotes2john.py /path/to/your/NoteStore.sqlite > notes_hash.txt
解説:
python
: Pythonインタープリタを起動します。(環境によっては `python3` が必要な場合があります)/path/to/john/run/applenotes2john.py
: `applenotes2john.py` スクリプトの実際のパスに置き換えてください。John the Ripper をソースからビルドした場合などは `run` ディレクトリにあることが多いです。Kali Linuxなどでは `/usr/share/john/` にあるかもしれません。/path/to/your/NoteStore.sqlite
: ステップ1でコピーした `NoteStore.sqlite` ファイルのパスに置き換えてください。> notes_hash.txt
: スクリプトの出力(抽出されたハッシュ)を `notes_hash.txt` という名前のファイルに保存します。ファイル名は任意に変更可能です。
成功すれば、`notes_hash.txt` ファイルに以下のような形式の文字列が出力されているはずです(これはあくまで例です)。
$ASN$*iterations*salt*tag*iv*encrypted_data
この文字列が、John the Ripperがパスワードを解読するための重要な情報となります。
ステップ3:解読開始!John the Ripperでパスワードクラック 🔓
いよいよ最終ステップ、John the Ripperを使って抽出したハッシュから元のパスワードを推測(クラッキング)します。
最も基本的な使い方は、ハッシュファイル名を指定してJohn the Ripperを実行することです。
john notes_hash.txt
John the Ripperは、デフォルトでいくつかのクラッキングモード(シングルクラックモード、辞書モード、インクリメンタルモード)を順番に試します。
- シングルクラックモード: ユーザー名(この場合はあまり関係ありません)や GECOS 情報からパスワードを推測します。Apple Notesの場合は効果が薄いことが多いです。
- 辞書モード: 指定されたパスワードリスト(辞書ファイル)に含まれる単語を試します。多くの場合、これが最も効率的です。John the Ripperにはデフォルトの辞書 (`password.lst`) が付属しています。
- インクリメンタルモード: 考えられる全ての文字の組み合わせを試します(ブルートフォース)。非常に時間がかかりますが、単純なパスワードなら見つけられる可能性があります。
辞書攻撃を明示的に行う
特定の辞書ファイルを使いたい場合は、`–wordlist` オプションを使用します。
john --wordlist=/path/to/your/dictionary.txt notes_hash.txt
`/path/to/your/dictionary.txt` を使用したい辞書ファイルのパスに置き換えてください。有名な辞書ファイルとしては `rockyou.txt` などがあります(利用は自己責任でお願いします)。
さらに、`–rules` オプションを使うと、辞書の単語に数字を追加したり、大文字小文字を変えたりといった「マングルール」を適用して、より多くのバリエーションを試すことができます。
john --wordlist=/path/to/your/dictionary.txt --rules notes_hash.txt
インクリメンタルモード(ブルートフォース)を明示的に行う
特定の文字種や長さでブルートフォース攻撃を行いたい場合は、`–incremental` オプションを使います。
john --incremental=Digits notes_hash.txt
上記は数字のみを試す例です。`Alnum` (英数字), `Alpha` (英字のみ), `Lower` (小文字のみ), `Upper` (大文字のみ) など、様々なモードがあります。詳細はJohn the Ripperのドキュメントを参照してください。
進捗確認と結果表示
クラッキングの実行中にキーボードの任意のキー(Enterなど)を押すと、現在の進捗状況(試行速度、経過時間、次に試すパスワード候補など)が表示されます。
パスワードが見つかると、John the Ripperはそれを画面に表示し、`$JOHN/john.pot` というファイル(Potファイル)に記録します。Potファイルは、John the Ripperのホームディレクトリ(通常はインストールディレクトリかユーザーのホームディレクトリ内の `.john`)にあります。
クラッキングが完了した後や、中断した後に見つかったパスワードを確認するには、`–show` オプションを使います。
john --show notes_hash.txt
これにより、`notes_hash.txt` に対応するクラック済みのパスワードが `ファイル名:パスワード` の形式で表示されます。🎉
注意点と倫理的な考慮事項 ⚖️
- 互換性: `applenotes2john.py` スクリプトは、特定のバージョンのmacOS/iOSでテストされています。新しいOSバージョンではデータベース構造が変更され、スクリプトが動作しない可能性があります。常に最新のJohn the Ripper Jumboバージョンを使用することをお勧めします。
- 処理時間: パスワードの複雑さによっては、クラッキングに数時間、数日、あるいはそれ以上かかることがあります。
- 法的・倫理的側面: 繰り返しになりますが、この技術はご自身が所有し、アクセスする正当な権利を持つデータに対してのみ使用してください。他人のアカウントやデータに不正アクセスする目的で使用することは、重大な犯罪となる可能性があります。
- Appleによる非推奨: Appleはパスワードを忘れた場合の回復手段を提供しておらず、このような方法はサポート対象外です。
まとめ ✨
Apple Notesのパスワードを忘れてしまうと非常に困りますが、`applenotes2john`とJohn the Ripperを使えば、パスワードを回復できる可能性があります。
- `NoteStore.sqlite` ファイルを見つけてコピーする。
- `applenotes2john.py` を使ってハッシュを抽出する。
- John the Ripperでハッシュファイルを指定してクラッキングを実行する。
- 見つかったパスワードでメモを開く。
このプロセスは少し技術的ですが、手順に従えば実行可能です。ただし、必ず倫理的な範囲内で、ご自身のデータに対してのみ使用するようにしてください。幸運を祈ります! 🤞
参考情報
- John the Ripper 公式サイト: https://www.openwall.com/john/
- John the Ripper GitHub リポジトリ (Jumbo): https://github.com/openwall/john/
- applenotes2john.py スクリプト: https://github.com/openwall/john/blob/bleeding-jumbo/run/applenotes2john.py
- Hashcat (別のパスワード回復ツール): https://hashcat.net/hashcat/ (Apple Notesにも対応していますが、使い方は異なります)
コメント