一款尝试重建文件系统结构并恢复文件的软件。目前仅支持 NTFS。
RecuperaBit 尝试在不考虑以下因素的情况下重建目录结构:
你可以通过阅读我的硕士论文或查看幻灯片来获取更多关于重建算法以及 RecuperaBit 所使用架构的信息。
你可以使用 Pip 安装 RecuperaBit:
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 指定一个保存文件。第一次扫描过程结束后,结果会保存在该文件中。第一次运行后,再次运行时会读取该文件,仅分析感兴趣的扇区以加快加载阶段。
可以使用 -w 强制覆盖保存文件。
RecuperaBit 包含一个小的命令行,允许用户恢复文件,并以 CSV 或主体文件格式导出分区内容。这些内容会导出到由 -o 指定的目录(默认为 recuperabit_output)。
目前 RecuperaBit 不适用于 NTFS 文件系统上的压缩文件。如果你对 NTFS 文件系统上文件压缩的内部机制有深入了解,我们将不胜感激,因为关于该主题的文档相当稀少。
RecuperaBit 可以在标准的 cPython 实现上运行,但使用 Pypy 解释器和 JIT 编译器可以提升速度:
pypy3 main.py /path/to/disk.img
文件可以逐个恢复,也可以从目录开始递归恢复。扫描过程完成后,你可以在提示符下输入以下命令来检查可恢复的分区列表:
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)。
如果你更想从 根目录 和 丢失文件 节点提取所有文件,需要根据文件系统类型知道根目录的标识符。以下是 RecuperaBit 支持的文件系统的根目录标识符:
| 文件系统类型 | 根目录 ID |
|---|---|
| NTFS | 5 |
丢失文件 的 ID 是 -1 针对所有文件系统。
因此,要恢复我们示例中的 Partition #0,你需要运行:
restore 0 5
restore 0 -1
文件将保存在 -o 指定的输出目录中。
本软件采用 GNU GPLv3 许可证发布。详情请参阅 LICENSE。