
ファイルシステム構造の再構築とファイルの復元を試みるソフトウェアです。現在はNTFSのみ対応しています。
RecuperaBitは、以下のような状況でもディレクトリ構造の再構築を試みます。
再構築アルゴリズムやRecuperaBitで使用されているアーキテクチャの詳細については、私の修士論文を読むか、スライドをご覧ください。
RecuperaBitはPipを使用してインストールできます。
pip install recuperabit
または、uv を使ったツールとしてのインストール:
uv tool install recuperabit
usage: recuperabit [-h] [-s SAVEFILE] [-w] [-o OUTPUTDIR] path
Reconstruct the directory structure of possibly damaged filesystems.
positional arguments:
path path to the disk image
optional arguments:
-h, --help show this help message and exit
-s SAVEFILE, --savefile SAVEFILE
path of the scan save file
-w, --overwrite force overwrite of the save file
-o OUTPUTDIR, --outputdir OUTPUTDIR
directory for restored contents and output files
主な引数は、ディスクまたはパーティションのビットストリームイメージへの path です。RecuperaBitは自動的にパーティションが開始するセクタを判断します。
RecuperaBitはディスクイメージを変更しませんが、実行中にその一部を複数回読み取ります。また、/dev/sda のような実際のデバイスでも動作しますが、損傷したドライブでは推奨しません。RecuperaBitは損傷したドライブに「ストレス」を与えて状況を悪化させたり、I/Oエラーでクラッシュする可能性があります。
オプションで、-s を使用してセーブファイルを指定できます。最初の実行時、スキャン処理の後に結果がファイルに保存されます。2回目以降は、そのファイルを読み込んで興味深いセクタのみを解析し、読み込みフェーズを高速化します。
-w を使用すると、セーブファイルの上書きを強制できます。
RecuperaBitには小さなコマンドラインが含まれており、ユーザーはファイルを復元したり、パーティションの内容をCSVまたはボディファイル形式でエクスポートできます。これらは -o で指定されたディレクトリ(デフォルトは recuperabit_output)に出力されます。
現在のところ、RecuperaBitはNTFSファイルシステム上の圧縮ファイルでは動作しません。NTFSファイルシステムにおけるファイル圧縮の内部動作に関する深い知識をお持ちの方は、ご協力をお願いします。利用可能なドキュメントはこのトピックに関して非常に乏しいためです。
RecuperaBitは標準のcPython実装で実行できますが、PypyインタプリタとJITコンパイラを使用することで速度を向上できます。
pypy3 main.py /path/to/disk.img
ファイルは1つずつ、またはディレクトリから再帰的に復元できます。スキャン処理が完了したら、プロンプトで次のコマンドを実行すると、復元可能なパーティションのリストを確認できます。
recoverable
各行にはパーティションに関する情報が表示されます。次の出力例を考えてみましょう。
Partition #0 -> Partition (NTFS, 15.00 MB, 11 files, Recoverable, Offset: 2048, Offset (b): 1048576, Sec/Clus: 8, MFT offset: 2080, MFT mirror offset: 17400)
特定のディレクトリからファイルを復元する場合、tree コマンドでツリーを画面に表示するか(大容量ドライブでは非常に冗長)、ファイルのCSVリストをエクスポートできます(詳細は help を参照)。
Root ノードと Lost Files ノードからすべてのファイルを抽出したい場合は、ファイルシステムの種類に応じたルートディレクトリの識別子を知っておく必要があります。以下は、RecuperaBitがサポートするファイルシステムのものです。
| ファイルシステムタイプ | ルートID |
|---|---|
| NTFS | 5 |
Lost Files のIDは すべてのファイルシステムで -1 です。
したがって、例の Partition #0 を復元するには、次のコマンドを実行します。
restore 0 5
restore 0 -1
ファイルは -o で指定された出力ディレクトリ内に保存されます。
このソフトウェアはGNU GPLv3のもとで公開されています。詳細は LICENSE を参照してください。