PabloLec/RecoverPy
GitHub: PabloLec/RecoverPy
RecoverPy 是一款基于终端的 Linux 数据恢复工具,通过直接扫描原始分区中的字节模式来查找和提取被删除或覆盖的文件残留内容。
Stars: 1779 | Forks: 88
RecoverPy
Scan raw partitions and recover data by inspecting disk blocks directly.




## 🎬 演示
## 🔎 概述
当文件被删除时,其元数据会首先消失。底层的磁盘块通常在被重新使用前会保持完好。
RecoverPy 直接扫描原始分区数据,并在整个设备中搜索字节模式。如果磁盘块未被覆盖,仍然可以通过已删除文件的内容找到其碎片。
它允许你检查匹配的块、导航至相邻的块,并以直接的方式提取残留的内容。
如果块已被彻底抹除,恢复是不可能的。如果它们依然存在,RecoverPy 就能帮你找回它们。
## 🧭 功能说明
* 在分区或磁盘镜像中搜索特定的字符串。
* 检查找到匹配项的磁盘块。
* 在相邻的块之间移动,以恢复碎片化数据。
* 选择并保存有用的内容。
RecoverPy 不会尝试去解析文件系统结构或恢复文件名。它的核心是展示磁盘上残留的内容,并使其变得可访问。
## 📦 安装
### 要求
- Linux
- Python 3.9+
访问原始块设备通常需要 `sudo`。
### 使用 `uv`
```
sudo uvx recoverpy
```
或者在本地安装:
```
uv tool install recoverpy
sudo recoverpy
```
### 使用 pip
```
python -m pip install recoverpy
sudo recoverpy
```
## ▶️ 用法
启动 RecoverPy:
```
sudo recoverpy
```
1. 选择一个分区。
2. 输入具有辨识度的搜索字符串。
3. 开始扫描。
4. 打开一个结果。
5. 检查并导航各个块。
6. 保存有用的内容。
与常见的词汇相比,使用唯一的标识符、配置键或句子片段通常能产生更好的搜索结果。
## ⚙️ 工作原理
RecoverPy 直接在块设备的原始字节流上进行操作。
选定的分区会以只读模式打开,并使用固定大小的块进行顺序扫描。扫描器会以增量方式处理数据流,并在块与块之间保留少量重叠,以确保不会遗漏跨越块边界的匹配项。
模式匹配是在字节级别执行的。对于每一个匹配项,RecoverPy 都会记录其在设备内的精确绝对偏移量。这个偏移量将成为块检查和导航的参考点。
块的读取是使用明确的偏移量来执行的,而不是依赖文件系统的抽象。这样能够实现对相邻块的精确访问,而无需将设备的大部分数据加载到内存中。
整个扫描过程是基于流式处理的,并且内存占用是有界的:RecoverPy 绝不会将整个分区全量加载到内存中。
## ⚠️ 限制说明
RecoverPy 作用于原始数据。它不会自动重建文件或推断文件的边界。
搜索结果可能会是不完整的或碎片化的。如果底层的块已经被覆盖,那么将无法进行恢复。
访问块设备通常需要 sudo。为了降低进一步覆盖数据的风险,请在恢复过程中避免向目标分区写入数据,并尽可能将其卸载。
## 🛠 开发
项目结构:
* `recoverpy/ui/` — Textual 界面
* `recoverpy/lib/search/` — 流式搜索引擎
* `recoverpy/lib/storage/` — 块和设备访问
* `recoverpy/lib/text/` — 解码工具
* `tests/` — 单元测试与集成测试
### 环境设置
```
uv sync --dev
```
### 本地运行
```
sudo uv run recoverpy
```
### 运行测试
```
uv run pytest -q
```
标签:Python, 数据恢复, 文件系统, 无后门, 磁盘扫描, 逆向工具