PhotoRecは、自由かつオープンソースのデータ回復ユーティリティソフトウェアである。テキストユーザインタフェースを持ち、ファイルカービング(英語版)の技術を用いて、デジタルカメラのメモリーカード、HDD、CD-ROMなど様々な媒体から消去されたファイルを回復することができる。480以上のファイル拡張子(約300種類のファイル)に対応している。 マイナーな種類のファイルを発見するためにファイルシグネチャを追加することも可能である。

PhotoRecはユーザーが回復しようとしている媒体には書き込まない。回復されたファイルはPhotoRecが動作しているディレクトリか、ユーザーの選択したディレクトリに書き込まれる。データ回復やデジタル・フォレンジクスにおいて使用することが可能である。Jack Wiles, Kevin Cardwell, Anthony Reyes (2007). The best damn cybercrime and digital forensics book period, p. 220. Syngress Publishing Inc. .Cameron H. Malin, Eoghan Casey, James M. Aquilina (2008). Malware Forensics: Investigating and Analyzing Malicious Code, p. xxviii. Syngress Publishing Inc. .Nathan Clarke (2010), Computer Forensics: A Pocket Guide, p. 67. IT Governance Publishing. . NIST Test Results for Graphic File Carving Tool: PhotoRec v7.0-WIP. NIST Test Results for Video File Carving Tool: PhotoRec v7.0-WIP . PhotoRecはTestDiskに同梱されている。Scott Mueller, Brian Knittel (2008). Upgrading and Repairing Microsoft Windows, Second Edition, page 685. Pearson Education Inc. .

機能 FAT, NTFS, ext2/ext3/ext4といったファイルシステムは データブロックにファイルを保存する (Windowsではデータクラスタ)。ブロックやクラスタのセクタ数は、ファイルシステムのフォーマット後は一定である。一般的にほとんどのオペレーティングシステムは、データのフラグメンテーションを最小限にするために、データを隣接させて保存しようとする(ドライブのシークにかかる時間はHDDに書き込む・読み込む時間に大きな影響があるため、フラグメンテーションを最小限にするのは重要である)。

ファイルが削除されたときは、ファイルのメタデータ (ファイル名、日時、サイズ、ブロックやクラスタの位置など)が失われる。たとえば、ext3やext4においては、ファイル名は消去されないが、ファイルの位置する最初のデータブロック の情報が失われる。すなわち、新しいファイルのデータによって上書きされるまでは、ファイルシステム上に削除されたファイルのデータは残っている。

「失われた」ファイルを回復するために、PhotoRecは最初にデータブロック(クラスタ)のサイズを見つけようとする。ファイルシステムが壊れていなければ、その数字はスーパーブロック(ext2/ext3/ext4)やボリュームブートレコード(FAT, NTFS)から読み取れる。読み取れない場合、PhotoRecは媒体をセクタごとに読み込み、最初の10ファイルを見つけることで、その位置からブロック(クラスタ)のサイズを計算する。ブロックサイズを知ることができたら、PhotoRecはブロック(クラスタ)ごとに媒体を読んでいく。それぞれのブロックをファイルシグネチャのデータベースに照らし合わせる(このデータベースはPhotoRecに付属している。PhotoRecの最初のバージョン以来、回復できるファイルのタイプは増え続けている)。これはファイルカービング(英語版)と呼ばれる一般的なデータ回復の方法である。

たとえば、PhotoRecはブロックが次のデータで始まっているときにJPEGファイルと判断する。

Start Of Image + APP0: 0xff, 0xd8, 0xff, 0xe0 Start Of Image + APP1: 0xff, 0xd8, 0xff, 0xe1 or Start Of Image + Comment: 0xff, 0xd8, 0xff, 0xfe

もし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は以下の環境下で動作する。

DOS Microsoft Windows: NT4, 2000, XP, 2003, 2008, 2016, Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11 Linux FreeBSD, NetBSD, OpenBSD SunOS macOS ARM

配布 PhotoRecとTestDiskは同梱されている。 CGSecurityのサイトからダウンロードできる。また、以下のいくつかのLinux Live CDsにも含まれている。

GParted Live CD Parted Magic(英語版) Slax-LFI, a Slax-derived distribution SystemRescueCD(英語版) Ubuntu Rescue Remix, an Ubuntu derivation

以下のように、多くの Unix系ディストリビューションのパッケージにも含まれている。

ALT Linux(英語版) Arch Linux Extra Repository Debian contrib Fedora ExtrasTestDisk in Fedora Red Hat Epel FreeBSD portTestDisk in FreeBSD ports OpenBSD portTestDisk in OpenBSD ports GentooTestDisk in Gentoo and Gentoo PortageTestDisk in Gentoo Portage Mandriva contrib Source Mage(英語版) LinuxTestDisk in Source Mage Ubuntu

関連項目

Photo recovery(英語版) List of free and open-source software packages(英語版) File recovery(英語版)

脚注

外部リンク