PhotoRecは、自由かつオープンソースのデータ回復ユーティリティソフトウェアである。テキストユーザインタフェースを持ち、ファイルカービング(英語版)の技術を用いて、デジタルカメラのメモリーカード、HDD、CD-ROMなど様々な媒体から消去されたファイルを回復することができる。480以上のファイル拡張子(約300種類のファイル)に対応している。 マイナーな種類のファイルを発見するためにファイルシグネチャを追加することも可能である。
PhotoRecはユーザーが回復しようとしている媒体には書き込まない。回復されたファイルはPhotoRecが動作しているディレクトリか、ユーザーの選択したディレクトリに書き込まれる。データ回復やデジタル・フォレンジクスにおいて使用することが可能である。 PhotoRecはTestDiskに同梱されている。
機能
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 Extras
- Red Hat Epel
- FreeBSD port
- OpenBSD port
- Gentoo and Gentoo Portage
- Mandriva contrib
- Source Mage(英語版) Linux
- Ubuntu
関連項目
- Photo recovery(英語版)
- List of free and open-source software packages(英語版)
- File recovery(英語版)
脚注
外部リンク
- 公式ウェブサイト



