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支持, 主引导记录, 原始磁盘访问, 取证工具, 取证报告生成, 域渗透, 引导扇区恢复, 扇区读取, 数字取证, 数据恢复, 文件系统解析, 无后门, 无第三方依赖, 物理磁盘读取, 电子数据取证, 磁盘取证, 磁盘结构分析, 磁盘镜像, 网络安全, 网络安全审计, 自动化脚本, 镜像校验, 隐私保护