はじめに:undropとは?
ファイルを誤って削除してしまった経験はありませんか?😱 あるいは、デジタルフォレンジック調査の一環として、削除されたはずのデータの痕跡を探す必要があるかもしれません。そんな時に役立つ可能性のあるツールの一つが undrop
です。
undrop
は、有名なパスワードクラッキングツールである John the Ripper (JtR) の “jumbo” バージョンに含まれているユーティリティの一つです。その主な目的は、ディスクやディスクイメージから、削除されたファイルのエントリやデータブロックの断片(フラグメント)をスキャンして発見することにあります。
重要なのは、「削除」が必ずしもデータの「完全消去」を意味しないという点です。多くのファイルシステムでは、ファイルを削除すると、そのファイルが占めていた領域が「空き領域」としてマークされるだけで、実際のデータはすぐには消去されません。新しいデータがその領域に書き込まれるまでは、元のデータが残存している可能性があるのです。💾 undrop
は、この残存データや、ファイルシステム内に残された削除済みファイルのメタデータ(ファイル名、サイズ、場所などの情報)の痕跡を探し出そうと試みます。
undrop
が役立つ可能性のあるシナリオには、以下のようなものが考えられます。
- 誤って削除したファイルの復旧試行: 完全に削除される前に、重要なファイルを復元できるか試す。
- デジタルフォレンジック調査: 証拠隠滅のために削除されたファイルの断片や情報を調査する。
- データ復旧の学習: ファイルシステムの仕組みやデータ復旧のプロセスを理解するための一助とする。
ただし、undrop
は万能薬ではありません。成功率は状況に大きく依存し、特にデータが上書きされてしまった場合は復元できません。また、法的な許可なく他人のデータを復元しようとすることは絶対に避けるべきです。🚫
この記事では、undrop
の基本的な使い方から、少し応用的なトピック、注意点までを詳しく解説していきます。データ復旧の世界を少し覗いてみましょう。🔍
準備:undropを使う前に
undrop
を使用するには、まず John the Ripper (JtR) の “jumbo” バージョンが必要です。undrop
は標準の JtR には含まれていないことがあるため、”jumbo” 版を入手・ビルドする必要があります。
John the Ripper (jumbo) の入手とビルド
JtR jumbo は、公式の GitHub リポジトリから入手できます。
- リポジトリのクローン:
git clone https://github.com/openwall/john -b bleeding-jumbo john-jumbo cd john-jumbo/src
- ビルド:
システムに必要な開発ツール(gcc, make, openssl-devel など)がインストールされていることを確認してください。その後、以下のコマンドでビルドします。
./configure && make -s clean && make -sj4
(
-sj4
の数字は CPU コア数に合わせて調整するとビルドが速くなる場合があります) - 確認:
ビルドが成功すると、
../run/
ディレクトリ内に実行ファイルが生成されます。undrop
もこの中にあるはずです。cd ../run ls undrop
undrop
が表示されれば準備完了です。🎉
注意: ビルド手順は環境によって異なる場合があります。エラーが発生した場合は、表示されるメッセージや JtR のドキュメント (doc/INSTALL
など) を参照してください。
JtR 公式サイト: https://www.openwall.com/john/
実行に必要な権限
undrop
は、ディスクデバイス(例: /dev/sda1
, /dev/sdb
)やディスクイメージファイルに直接アクセスする必要があります。多くの場合、これらのデバイスファイルへのアクセスには管理者権限(root権限)が必要です。したがって、undrop
を実行する際には sudo
コマンドを使用することが一般的です。
sudo ./undrop ...
権限がないと、デバイスを開けずにエラーとなります。🔒
対象デバイスの特定
どのデバイスやパーティションをスキャン対象とするかを正確に特定する必要があります。Linux 環境では lsblk
や fdisk -l
、parted -l
などのコマンドが役立ちます。
sudo lsblk -f
このコマンドで、デバイス名(例: sdb1
)、ファイルシステムタイプ(例: ntfs
, vfat
, ext4
)、マウントポイントなどを確認できます。誤ったデバイスを指定しないように、十分に注意してください。
基本的な使い方:undrop コマンドの実行
undrop
の基本的なコマンド構文は以下のようになります。
./undrop [options] <device_or_image_file> [output_directory]
[options]
: 動作を制御するためのオプション(後述)。<device_or_image_file>
: スキャン対象のデバイスファイル(例:/dev/sdb1
)またはディスクイメージファイル(例:disk_image.dd
)。必須項目です。[output_directory]
: 発見されたデータやメタ情報を保存するディレクトリ。指定しない場合、カレントディレクトリにundrop_output
のような名前で作成されることが多いですが、明示的に指定することを推奨します。
主要なオプション
undrop
にはいくつかのオプションがあり、状況に応じて使い分けることで、より効率的にスキャンを進めることができます。以下に主要なオプションをまとめます。
オプション | 説明 | 例 |
---|---|---|
-i <input_file> |
スキャン対象の入力デバイスまたはイメージファイルを指定します。コマンドラインの最後にデバイス名を指定する代わりに使用できます。 | -i /dev/sdb1 |
-o <output_directory> |
発見されたデータの出力先ディレクトリを指定します。存在しない場合は作成されます。 | -o /mnt/recovery/found_files |
-f <format> |
対象のファイルシステムタイプを指定します。これを指定することで、undrop はそのファイルシステムに特化したスキャン方法を用いることができます。指定しない場合、自動検出を試みますが、正確に指定する方が良い結果が得られる可能性があります。 |
-f ntfs , -f fat , -f ext4 |
-l |
undrop が対応しているファイルシステム(フォーマット)の一覧を表示します。どの <format> を指定できるか確認する際に便利です。 |
./undrop -l |
-v |
詳細表示モード (Verbose mode) を有効にします。スキャン中の詳細な情報やデバッグメッセージが出力されるようになります。問題発生時の原因究明に役立ちます。 | -v |
-d |
ディレクトリ構造(削除されたものを含む)を再構築しようと試みます。ファイルシステムによっては効果がない場合もあります。 | -d |
-t <file_type> |
特定のファイルタイプ(拡張子など)に絞ってスキャンを試みる場合があります(機能は限定的かもしれません)。 | -t jpg |
-h または --help |
ヘルプメッセージを表示します。利用可能な全てのオプションを確認できます。 | ./undrop -h |
注意: オプションの有無や挙動は undrop
のバージョンによって異なる可能性があります。必ず ./undrop -h
で利用中のバージョンのオプションを確認してください。
実行例:USBメモリからのデータ復旧試行
例として、/dev/sdb1
として認識されている FAT32 フォーマットの USB メモリから削除されたファイルの痕跡を探し、/home/user/recovered_usb
ディレクトリに出力する場合のコマンドを見てみましょう。
- 対象デバイスのアンマウント (重要!):
データ復旧作業を行う前に、対象のデバイスがマウントされている場合は必ずアンマウントしてください。マウントされたまま読み書きが行われると、復旧したいデータが上書きされてしまう危険性が高まります。
sudo umount /dev/sdb1
(マウントポイントは環境によって異なります。マウントされていない場合は不要です)
- 出力ディレクトリの作成:
出力先のディレクトリを事前に作成しておくと確実です。
mkdir /home/user/recovered_usb
- undrop の実行:
John the Ripper の
run
ディレクトリに移動し、sudo
を使ってundrop
を実行します。cd /path/to/john-jumbo/run sudo ./undrop -i /dev/sdb1 -o /home/user/recovered_usb -f fat -v
ここでは以下のオプションを使用しています:
-i /dev/sdb1
: 入力デバイスを指定。-o /home/user/recovered_usb
: 出力ディレクトリを指定。-f fat
: ファイルシステムタイプとして FAT を明示的に指定。(vfat
やfat32
と指定する必要がある場合もあります)-v
: 詳細な情報を表示。
- 結果の確認:
スキャンが完了すると、
/home/user/recovered_usb
ディレクトリ内に、発見された可能性のあるデータやメタ情報が出力されます。多くの場合、ファイル名は失われているため、file0001.dat
のような連番のファイル名で保存されたり、ファイルタイプごとに分類されたりします。内容を確認し、目的のファイルが含まれているか探します。ファイルによっては破損している可能性もあります。
スキャンにはディスクのサイズや速度によって時間がかかる場合があります。⏳ 焦らず、プロセスが完了するのを待ちましょう。
応用的な使い方と注意点
undrop
の基本的な使い方を理解したところで、もう少し応用的な使い方や、利用する上での重要な注意点について見ていきましょう。
ディスクイメージからの復元
物理デバイス (/dev/sdxN
) の代わりに、ディスクイメージファイルをスキャン対象にすることも可能です。これは、フォレンジック調査などで、保全のために取得したイメージを分析する場合に特に有用です。
まず、dd
コマンドなどを使ってディスクイメージを作成します。元のデバイスへの書き込みを防ぐため、対象デバイスは読み取り専用でマウントするか、書き込み禁止の措置を講じることが推奨されます。
# 例: /dev/sdb1 のイメージを /mnt/analysis/usb_image.dd として作成
sudo dd if=/dev/sdb1 of=/mnt/analysis/usb_image.dd bs=4M status=progress
イメージ作成後、undrop
の入力としてこのイメージファイルを指定します。
sudo ./undrop -i /mnt/analysis/usb_image.dd -o /mnt/analysis/recovered_from_image -f fat -v
ディスクイメージを使用する利点は以下の通りです。
- 元のデバイスに変更を加えるリスクがない。
- イメージファイルをコピーして、複数のツールで分析できる。
- 物理デバイスが手元になくても分析が可能。
undrop の限界と注意点 ⚠️
undrop
は便利なツールですが、その限界を理解しておくことが非常に重要です。過度な期待は禁物です。
- 上書きされたデータは復元不可能:
ファイル削除後、そのファイルが占めていたディスク領域に新しいデータが書き込まれてしまうと、元のデータは完全に失われ、
undrop
でも復元することはできません。ファイルを削除した後は、可能な限り速やかに復旧作業を行い、対象デバイスへの書き込みを避けることが重要です。 - ファイルシステムの断片化:
ファイルがディスク上で連続した領域に保存されず、複数の場所に断片化して保存されている場合、
undrop
が完全なファイルを復元するのが難しくなることがあります。特に大きなファイルや、長期間使用されたディスクでは断片化が進んでいる可能性があります。復元できたとしても、ファイルが破損していることがあります。 - 対応ファイルシステムの制限:
undrop
が対応しているファイルシステムは限られています (fat
,ntfs
,ext2/3/4
など)。./undrop -l
で対応リストを確認し、対象のファイルシステムが含まれているか確認してください。対応していないファイルシステムに対して実行しても、意味のある結果は得られません。 - 成功率は状況依存: 削除からの経過時間、ディスクの使用状況、ファイルシステムの健全性、ファイルの種類やサイズなど、多くの要因によって復元の成功率は変動します。必ずしも目的のファイルが見つかるとは限りません。
- ファイル名やディレクトリ構造の喪失:
多くの場合、削除されたファイルの正確なファイル名や元のディレクトリ構造は失われています。
undrop
は見つかったデータ断片を連番などで保存することが多く、後から内容を確認して目的のファイルを探し出す作業が必要です。 - 法的・倫理的な考慮事項:
自分自身が所有していないデバイスやデータに対して、許可なく
undrop
などのデータ復旧ツールを使用することは、プライバシーの侵害や法的な問題を引き起こす可能性があります。必ず適切な権限と目的を持って使用してください。
トラブルシューティング:問題が発生したら?
undrop
を使用していると、期待通りに動作しなかったり、エラーが発生したりすることがあります。ここでは、よくある問題とその対処法のヒントをいくつか紹介します。🤔
エラー: “Cannot open device/file” や “Permission denied”
- 原因: スキャン対象のデバイスファイルやイメージファイルへのアクセス権限がない。
- 対処法:
sudo
を付けてコマンドを実行しているか確認してください。- 指定したデバイスパス (
/dev/sdb1
など) やファイルパスが正しいか再確認してください。 - 他のプロセスがデバイスを使用している(マウントされているなど)場合は、アンマウントするか、プロセスを終了させてから再試行してください。
エラー: “Unknown filesystem” やファイルシステム関連のエラー
- 原因:
undrop
がファイルシステムを自動認識できない、または-f
オプションで指定したフォーマットが間違っている、もしくは対応していない。 - 対処法:
lsblk -f
やblkid
コマンドで対象デバイスの正確なファイルシステムタイプを確認してください。./undrop -l
で、確認したファイルシステムタイプがundrop
でサポートされているか確認してください。- サポートされている場合は、
-f
オプションで正しいファイルシステムタイプを明示的に指定して再試行してください。(例:-f ntfs
,-f vfat
)
期待したファイルが見つからない / 復元されたファイルが破損している
- 原因:
- 削除後にデータが上書きされてしまった。
- ファイルが高度に断片化していた。
- ファイルシステムのメタデータが破損していた。
undrop
がそのファイルの痕跡を見つけられなかった。
- 対処法と考え方:
- 残念ながら、データが物理的に上書きされている場合は復元できません。
-v
(詳細表示) オプションを付けて実行し、何かエラーや警告が出ていないか確認します。- 出力されたファイルの中に、目的のファイルの断片が含まれていないか、バイナリエディタなどで確認してみることもできます(高度な知識が必要です)。
undrop
以外のデータ復旧ツール(例: PhotoRec, TestDisk, Foremost, Scalpel など)を試してみることも検討します。ツールによって得意なファイルシステムや復旧アルゴリズムが異なる場合があります。- 専門のデータ復旧サービスに依頼することも選択肢ですが、費用がかかります。
スキャンに非常に時間がかかる
- 原因: ディスクのサイズが大きい、ディスクの読み取り速度が遅い、CPU 負荷が高いなど。
- 対処法と考え方:
- ディスク I/O は時間がかかる処理です。特に大容量ディスクの場合、数時間以上かかることも珍しくありません。完了するまで待つのが基本です。
- 可能であれば、より高速なインターフェース(例: USB 2.0 ではなく USB 3.0 や SATA)で接続されたディスクに対して実行する方が速くなります。
-v
オプションで進捗状況を確認できます。- 他の重い処理(ディスクアクセスや CPU を多用する処理)が同時に実行されていないか確認します。
問題解決には、エラーメッセージをよく読み、基本的な確認事項(権限、パス、ファイルシステムタイプ)をチェックすることが第一歩です。焦らず、一つずつ原因を探っていきましょう。🧐
まとめと関連情報
undrop
は、John the Ripper jumbo スイートに含まれる、削除されたファイルの痕跡を探すためのツールです。ファイルシステムに残されたメタデータやデータ断片をスキャンし、復元を試みます。
重要なポイント:
undrop
を使うには JtR jumbo のビルドが必要です。- 実行には通常、管理者権限 (
sudo
) が必要です。 - 対象デバイスはアンマウントしてからスキャンします。
-i
で入力、-o
で出力、-f
でファイルシステムタイプを指定するのが基本です。- ディスクイメージファイルを入力として使用することも可能です。
- データが上書きされていると復元は不可能です。 成功率は状況に依存します。
- 対応ファイルシステムには限りがあります。
- 法的・倫理的な問題を考慮し、適切な権限を持って使用してください。
データ復旧は繊細な作業であり、undrop
はその一つの手段に過ぎません。常に成功するわけではありませんが、データ損失の危機に瀕した際や、フォレンジック調査の一環として試してみる価値のあるツールと言えるでしょう。✨
何よりも大切なのは、日頃から重要なデータのバックアップを取っておくことです。それが最も確実なデータ保護策となります。
参考情報・関連ツール
- John the Ripper 公式サイト: JtR jumbo の入手元や関連情報があります。
https://www.openwall.com/john/ - John the Ripper Community Wiki (undrop): より詳細な情報や使用例が記載されている場合があります (情報が古い可能性もあります)。
https://openwall.info/wiki/john/undrop (アクセス可能か、情報が最新か確認が必要です) - その他のデータ復旧ツール:
- TestDisk: パーティション復旧やブートセクタ修復に強力なツール。ファイル復旧機能も持ちます。
https://www.cgsecurity.org/wiki/TestDisk - PhotoRec: TestDisk とセットで配布されることが多い、ファイルシグネチャに基づいてファイルを復旧するツール。ファイルシステムが破損していても機能することがあります。
https://www.cgsecurity.org/wiki/PhotoRec - Foremost / Scalpel: これらもファイルヘッダ・フッタ情報 (シグネチャ) を元にファイルを復元するカービングツールです。
Foremost (GitHub)
Scalpel (GitHub)
- TestDisk: パーティション復旧やブートセクタ修復に強力なツール。ファイル復旧機能も持ちます。
これらのツールはそれぞれ特徴や得意分野が異なります。undrop
でうまくいかなかった場合でも、他のツールで成功する可能性はあります。状況に応じて適切なツールを選択することが重要です。
コメント