Lazza/RecuperaBit
GitHub: Lazza/RecuperaBit
一款用于 NTFS 文件系统取证重建的 Python 工具,能在分区表丢失或元数据损坏的情况下智能重建目录结构并恢复文件。
Stars: 611 | Forks: 80
# 
一款试图重建文件系统结构并恢复文件的软件。目前它仅支持 NTFS。
RecuperaBit 尝试重建目录结构,无论是否存在以下情况:
- 缺少分区表
- 未知的分区边界
- 部分被覆盖的元数据
- 快速格式化
您可以通过阅读[我的硕士论文](https://www.scribd.com/doc/309337813/)或查看[幻灯片](http://www.slideshare.net/TheLazza/recuperabit-forensic-file-system-reconstruction-given-partially-corrupted-metadata),获取关于 **重建算法** 以及 RecuperaBit 所用架构的更多信息。
## 用法
```
usage: main.py [-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
```
主要参数是磁盘或分区 bitstream 镜像的 `path`(路径)。
RecuperaBit 会自动确定分区起始的扇区。
RecuperaBit 不会修改磁盘镜像,但在执行过程中会多次读取其中的某些部分。它也应该适用于真实设备(例如 `/dev/sda`),但对于受损的硬盘**不建议这样做**。RecuperaBit 可能会因为“压力测试”受损硬盘而导致情况恶化,或者因 I/O 错误而崩溃。
此外,可以使用 `-s` 指定一个保存文件。第一次扫描过程结束后,结果会保存在该文件中。第一次运行之后,读取该文件将仅分析相关扇区,从而加快加载阶段。可以使用 `-w` 强制覆盖保存文件。
RecuperaBit 包含一个小型命令行,允许用户恢复文件并以 CSV 或 [body file](http://wiki.sleuthkit.org/index.php?title=Body_file) 格式导出分区内容。这些内容会被导出到由 `-o` 指定的目录(或 `recuperabit_output`)。
### 限制
目前 RecuperaBit 无法处理 NTFS 文件系统上的压缩文件。
如果您对 NTFS 文件系统上的文件压缩内部机制有深入了解,您的帮助将不胜感激,因为关于该主题的现有文档非常稀少。
### Pypy
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`)。
如果您更想从 *Root* 和 *Lost Files* 节点提取所有文件,您需要根据文件系统类型知道根目录的标识符。以下是 RecuperaBit 支持的文件系统的标识符:
| 文件系统类型 | Root Id |
|------------------|---------|
| NTFS | 5 |
*Lost Files* 的 id 对于**每个文件系统**都是 -1。
因此,在我们的示例中要恢复 `Partition #0`,您需要运行:
```
restore 0 5
restore 0 -1
```
文件将被保存在由 `-o` 指定的输出目录中。
## 许可证
本软件根据 GNU GPLv3 发布。有关更多详细信息,请参阅 `LICENSE`。
标签:HTTP工具, meg, NTFS, Python, 二进制发布, 云资产清单, 信息安全, 元数据修复, 分区恢复, 司法鉴定, 开源工具, 数字取证, 数据恢复, 数据还原, 文件系统重建, 无后门, 查询库, 灾难恢复, 磁盘镜像, 网络信息收集, 自动化脚本, 逆向工具, 逆向工程