fatimanaeem-hub/MBR-Integrity-Verifier-and-Recovery-Tool-DFSemProject
GitHub: fatimanaeem-hub/MBR-Integrity-Verifier-and-Recovery-Tool-DFSemProject
基于 Python 的数字取证工具,用于从取证磁盘镜像和实时物理磁盘中读取、解析、验证和恢复 MBR 及 GPT 引导结构数据。
Stars: 0 | Forks: 0
# MBR 完整性验证与恢复工具
一个基于 Python 的数字取证实用程序,用于从取证磁盘镜像和实时物理磁盘中读取、验证、解析和恢复主引导记录 (MBR) 和 GPT 数据。
## 1\. 工具概述
该工具提供对取证调查中至关重要的磁盘结构(包括主引导记录 (MBR)、主 GPT 头和备份 GPT 头)的原始扇区级别访问。
系统是模块化的:
**磁盘读取模块** 处理低级别磁盘访问。
**MBR 与 GPT 解析模块** 从原始字节中提取结构化的取证信息。
**完整性与恢复模块** 验证并恢复被修改的引导结构。
**GUI 与报告模块** 提供可视化和报告生成功能。
磁盘读取模块 (core/disk\_reader.py) 构成了系统的基础。它从以下位置读取 512 字节的扇区:
- 取证镜像(.dd, .img, 分割的 .001–.00N)
- 实时物理磁盘(Windows \\\\.\\PhysicalDriveN)
分割的取证镜像格式会被自动检测并在内存中重新组合。所有功能严格遵循取证规则:
## 2\. 安装说明
**步骤 1 — 安装 Python 3.10 或更高版本**
从 [https://www.python.org/downloads/](https://www.python.org/downloads/) 下载并启用 “Add to PATH”。
验证:
```
python --version
```
**步骤 2 — 项目结构**
```
DFProject/
├── core/
│ ├── disk_reader.py
│ ├── mbr_parser.py
│ ├── gpt_parser.py
├── images/
│ │ ├── mbr_test.vhd
│ │ ├── gpt_test.vhd
│ │ └── README_IMAGES.txt
├── tests/
│ ├── test_disk_reader.py
│ └── test_run_parser.py
└── main.py `
```
**步骤 3 — 加载取证镜像或 VHD 磁盘**
**重要提示**:将所有 .001 镜像片段或挂载的 VHD 磁盘文件放入 images/ 目录中。
**步骤 4 — 无需外部库**
仅使用了 Python 标准库。
## 3\. 依赖项和前提条件
无需外部依赖项。它完全依赖于以下预先安装在 Python 中的标准库模块:
- `os` — 文件路径解析和大小计算
- `sys` — 用于实时磁盘访问的平台检测
- `glob` — 分段文件发现
- `struct` — 为二进制解析扩展而保留
**要求:**
- Python 3.10+
- Windows(用于实时磁盘访问)
- 管理员权限(仅用于 PhysicalDrive 访问)
## 4\. 执行步骤
**运行测试套件(建议的第一步):**
```
cd DFProject
python tests/test_disk_reader.py
```
这将运行涵盖片段检测、MBR 读取、GPT 头读取、备份 GPT 读取、实时磁盘访问和错误处理的六项测试。所有结果都会带有 PASS/FAIL 指示器打印出来。
**在代码中使用该模块:**
```
from core.disk_reader import read_mbr_from_image
mbr = read_mbr_from_image("images/clean_mbr.001")
# mbr 恰好是 512 个原始字节
```
**在 Windows 上进行实时磁盘访问(必须以管理员身份运行 PowerShell):**
```
from core.disk_reader import read_mbr_from_live
mbr = read_mbr_from_live(drive_number=0)
# 0 = PhysicalDrive0, 1 = PhysicalDrive1, 以此类推
```
**获取镜像元数据:**
```
from core.disk_reader import get_image_info
info = get_image_info("images/clean_mbr.001")
# 返回总大小、扇区数、段列表和 split 标志
```
**运行完整的集成测试:**
```
python tests/test_run_parser.py
```
**读取 MBR:**
```
from core.disk_reader
import read_mbr_from_imagembr = read_mbr_from_image("images/mbr_test.vhd")
```
**解析 MBR:**
```
from core.mbr_parser
import parse_partition_tablepartitions = parse_partition_table(mbr)
```
**解析 GPT:**
```
from core.gpt_parser
import parse_gpt_headergpt_info = parse_gpt_header(gpt_bytes)
```
## 5\. 平台兼容性
### Windows 10 / 11
✔ 完全支持\
✔ 支持实时磁盘读取\
✔ 支持 VHD 和取证镜像
### Linux / macOS
✔ 支持取证镜像\
✔ 必须手动挂载 VHD (VHD)\
❌ 实时磁盘读取模块已禁用
## 6\. 故障排除
**运行测试时出现 `FileNotFoundError`**
tests/test_disk_reader.py 中的镜像路径被设置为 `images/clean_mbr.001`。请确保你的片段文件位于项目根目录下名为 `images/` 的文件夹中,并且文件名精确为 `clean_mbr.001`。
**`ValueError: only got N bytes`**
一个或多个镜像片段丢失或损坏。请确认 `images/` 文件夹中存在所有 18 个片段,并且没有任何一个文件的大小为 0 字节。如果片段已损坏,请使用 FTK Imager 重新导出镜像。
**`PermissionError: Access denied to \\.\PhysicalDrive0`**
脚本未以管理员权限运行。请关闭 PowerShell,右键单击它,选择“以管理员身份运行”,导航回项目文件夹,然后重新运行测试。
**在 `\\.\PhysicalDrive0` 上出现 `FileNotFoundError`**
驱动器索引可能有误。打开“磁盘管理”(`diskmgmt.msc`) 以确认与你想要读取的磁盘相对应的物理驱动器号,然后将该编号传递给 `read_mbr_from_live()`。
**`OSError: only supported on Windows`**
你在 Linux 或 macOS 上调用了 `read_mbr_from_live()`。请按照平台兼容性部分中的说明,改为使用 `read_mbr_from_image()` 并传入原始设备路径。
**未能自动检测到片段**
自动检测功能会查找具有相同基本名称且扩展名为纯数字(`.001`、`.002` 等)的文件。如果你的文件使用了不同的命名规则,请重命名它们以符合此模式,或者手动传递每个路径。
## 7\. 团队成员
Syeda Shanzay Shah 23I-2016\
Sarita Sangrez 23I-2088\
Rumaisah Haroon 23I-2106\
Fatima Naeem 23I-2046
标签:DD镜像, GPT解析, GUID分区表, HTTP工具, MBR解析, Python, VHD支持, 主引导记录, 原始磁盘访问, 取证工具, 取证报告生成, 域渗透, 引导扇区恢复, 扇区读取, 数字取证, 数据恢复, 文件系统解析, 无后门, 无第三方依赖, 物理磁盘读取, 电子数据取证, 磁盘取证, 磁盘结构分析, 磁盘镜像, 网络安全, 网络安全审计, 自动化脚本, 镜像校验, 隐私保护