Demonstration of PhotoRec running in Linux | |
開発元 | Christophe Grenier |
---|---|
初版 | 2002年4月30日 |
最新版 |
7.1
/ 2019年7月7日 |
リポジトリ |
git |
プログラミング 言語 | C (nCurses) |
対応OS | Cross-platform |
プラットフォーム | CLI |
種別 | Data recovery |
ライセンス | GNU GPL v2+ (free software) |
公式サイト |
www |
PhotoRecは、自由かつオープンソースのデータ回復ユーティリティソフトウェアである。テキストユーザインタフェースを持ち、ファイルカービング(英語版)の技術を用いて、デジタルカメラのメモリーカード、HDD、CD-ROMなど様々な媒体から消去されたファイルを回復することができる。480以上のファイル拡張子(約300種類のファイル)に対応している。[1] マイナーな種類のファイルを発見するためにファイルシグネチャを追加することも可能である。[2]
PhotoRecはユーザーが回復しようとしている媒体には書き込まない。回復されたファイルはPhotoRecが動作しているディレクトリか、ユーザーの選択したディレクトリに書き込まれる。データ回復やデジタル・フォレンジクスにおいて使用することが可能である。[3][4][5] [6] [7] PhotoRecはTestDiskに同梱されている。[8]
FAT, NTFS, ext2/ext3/ext4といったファイルシステムは データブロックにファイルを保存する (Windowsではデータクラスタ)。ブロックやクラスタのセクタ数は、ファイルシステムのフォーマット後は一定である。一般的にほとんどのオペレーティングシステムは、データのフラグメンテーションを最小限にするために、データを隣接させて保存しようとする(ドライブのシークにかかる時間はHDDに書き込む・読み込む時間に大きな影響があるため、フラグメンテーションを最小限にするのは重要である)。
ファイルが削除されたときは、ファイルのメタデータ (ファイル名、日時、サイズ、ブロックやクラスタの位置など)が失われる。たとえば、ext3やext4においては、ファイル名は消去されないが、ファイルの位置する最初のデータブロック の情報が失われる。すなわち、新しいファイルのデータによって上書きされるまでは、ファイルシステム上に削除されたファイルのデータは残っている。
「失われた」ファイルを回復するために、PhotoRecは最初にデータブロック(クラスタ)のサイズを見つけようとする。ファイルシステムが壊れていなければ、その数字はスーパーブロック(ext2/ext3/ext4)やボリュームブートレコード(FAT, NTFS)から読み取れる。読み取れない場合、PhotoRecは媒体をセクタごとに読み込み、最初の10ファイルを見つけることで、その位置からブロック(クラスタ)のサイズを計算する。ブロックサイズを知ることができたら、PhotoRecはブロック(クラスタ)ごとに媒体を読んでいく。それぞれのブロックをファイルシグネチャのデータベースに照らし合わせる(このデータベースはPhotoRecに付属している。PhotoRecの最初のバージョン以来、回復できるファイルのタイプは増え続けている)。これはファイルカービング(英語版)と呼ばれる一般的なデータ回復の方法である。
たとえば、PhotoRecはブロックが次のデータで始まっているときにJPEGファイルと判断する。
もしPhotoRecがこの前でファイル回復を始めていた場合、いったんそれを中止し、可能であればファイルの整合性をチェックしてから新しい(発見したファイルシグネチャから判断されたタイプの)ファイルの保存を開始する。
データが断片化していなければ、回復されたファイルはもとのファイルと同じサイズ(もしくはもとより大きいサイズ)になるはずである。PhotoRecがもとのファイルサイズをファイルのヘッダーから判断できた場合、回復されたファイルは正しいサイズに切り詰められる。もしヘッダーの示すサイズよりも回復したファイルが小さい場合、そのファイルは捨てられる。 MP3などのファイルはデータストリームである。この場合、PhotoRecは回復されたデータを解析し、ストリームが終了した場所で回復を終了する。
ファイルの回復が成功したあと、PhotoRecは以前のデータブロックの中で、ファイルシグネチャを発見したが回復に失敗したもの (回復したファイルのサイズが小さすぎたものなど)をチェックし、もう一度回復しようとする。これによって、断片化されたファイルのいくつかは回復に成功する可能性がある。
PhotoRecはもとのファイル名を復元しないが、たとえばexiftoolを用いればJPEGのファイル名を復元できる。 https://www.cgsecurity.org/testdisk_doc/after_using_photorec.html#renaming-files-using-exiftool
PhotoRec (Testdisk) はAutopsy(英語版) やWondershare RecoverItなどのソフトウェアに同梱されている。
PhotoRecは以下の環境下で動作する。[9]
PhotoRecとTestDiskは同梱されている。 CGSecurityのサイトからダウンロードできる。また、以下のいくつかのLinux Live CDsにも含まれている。
以下のように、多くの Unix系ディストリビューションのパッケージにも含まれている。