maxbendinelli/NTFSForParser
GitHub: maxbendinelli/NTFSForParser
一个教育性数字取证框架,用 Python 从底层解析 FAT32/NTFS/Ext4 文件系统和磁盘镜像,帮助学生理解文件系统结构并实践数据恢复技术。
Stars: 0 | Forks: 0
# NTFSForParser - 教育性取证框架
**NTFSForParser** 是一个使用 Python 开发的交互式框架,完全基于**教育和教学**目的设计。其目标是让计算机取证专业的学生能够深入研究文件系统,了解底层结构(十六进制)、元数据以及恢复技术,而无需依赖复杂的图形界面或黑盒工具。
目前支持对 **FAT32** 和 **NTFS** 分区进行深度分析,以及对 **Ext4** (Linux) 进行基础检查,能够处理原始镜像(`.dd`、`.raw`、分割文件 `.001`)以及以 **EnCase (`.e01`)** 格式获取的镜像。
## 🚀 主要特性
1. **交互式取证 Shell:** 使用类似于 Bash 的命令行界面浏览磁盘镜像,支持逐个扇区跳转、解析簇或在所调查镜像的目录树中导航。
2. **全面的 MACB 支持:** 原生解析和提取时间元数据:
- FAT 环境下的 MS-DOS 日期。
- 用于 MFT (NTFS) 的 100 纳秒精度的 FILETIME 日期 (`$STANDARD_INFORMATION`)。
3. **层级导航:** 使用 `cd` 命令进入文件夹,使用 `ls` 命令实时显示内容。
4. **Data Carving 与恢复:** 使用 `recover` 命令演示直接从元数据结构中对 FAT32 中连续已删除文件进行 *File Carving* 的技术。
5. **完整性校验:** 使用 `hash_check` 读取完整镜像,并将其 MD5 哈希值与原始值(如果内嵌在 E01 中)进行比较,以确保**证据保管链**的完整。
6. **支持多种格式:** 完整的 RAW 镜像、分割镜像 (001, 002) 以及 EnCase 容器 (E01)。
## ⚙️ 要求与安装
该框架使用 Python 标准库的原生组件(`struct`、`hashlib`、`cmd`、`argparse` 等),旨在促进学习并避免依赖“魔法”依赖项。
**唯一**的例外是用于读取专有 E01 格式的库。
### 1. 要求
- Python 3.8+
- 安装 `requirements.txt` 中列出的依赖项:
pip install -r requirements.txt
*(注意:这将安装 `libewf-python`,这是处理 `.e01` 容器压缩和索引所必需的)*
### 2. 使用与启动
要启动分析器,只需运行 `main.py` 并传入您的取证镜像路径。
*(注意:如果您尝试打开物理磁盘 `\\.\PhysicalDrive0`,请确保以管理员身份运行控制台。)*
```
# 启动交互式 shell
python main.py ruta_a_la_imagen.e01
# 通过 CLI 快速执行而不进入 shell
python main.py imagen.dd --part 0 --cluster 500
python main.py imagen.dd --identify-sector 2048
python main.py imagen.dd --part 0 --runs "Zone.Identifier"
python main.py imagen.dd --part 0 --dump-clusters 100 +50 volcado.bin
```
## 💻 Shell 命令
进入 `Forense >` 控制台后,您将拥有全套命令。您可以随时输入 `help` 查看列表。
### 分区与镜像管理
- `partitions`:列出在分区表 (MBR) 中找到的所有分区。
- `select `:激活并在内部挂载列出的分区之一。
- `imageinfo`:如果镜像是一个 EnCase 容器 (.e01),打印由鉴定人存储的所有取证元数据。
- `hash_check`:逐字节重新计算完整镜像的 MD5 哈希值,并将其与原始值进行比较,以警告证据是否损坏或被篡改。
### 底层检查
- `hexdump `:从文件起始处进行纯十六进制转储。
- `sector `:显示指定 LBA (Logical Block Addressing) 处的物理内容。
- `cluster `:通过计算相对于当前分区的偏移量来显示逻辑簇。
- `identify sector ` (或 `cluster`):读取 Magic Bytes 和头签名,并尝试猜测其结构(VBR、MFT 记录、PDF/Zip/JPEG 等文件头)。
### 文件系统导航 (FAT / NTFS / Ext4)
- `vbr`:解析并翻译 Volume Boot Record 或 BPB 的值。
- `ls`:列出文件、目录、其删除状态和修改日期。支持读取 Ext4 中的 Inode 2。
- `cd `:深入文件系统的目录。使用 `cd ..` 返回上一级。
- `info `:显示该文件的所有技术元信息(属性、大小、完整日期、驻留与非驻留)。如果 NTFS 中存在隐藏的 ADS 流,将会发出通知!
- `runs `:打印文件存储信息的物理磁盘地址。支持 FAT 链、Data Runs (NTFS) 和 Extent 树 (Ext4)。您可以搜索特定的流,例如 `runs 12:Zone.Identifier`。
### 证据读取与恢复
- `cat `:在控制台打印文本或转储文件或磁盘块的十六进制数据。支持 `cat id:stream_name` 语法以提取 ADS。能够组装非驻留文件。
- `extract `:以取证方式将文件(驻留或非驻留)从磁盘镜像复制到您的 PC。
- `recover `:对 FAT32 中已删除的文件执行简单的 File Carving,基于其大小和起始簇的原始记录假设其是连续的。
- `dump_clusters ` (或 `dump_blocks`):从磁盘直接提取原始簇或块的范围。例如:`dump_clusters 100 +50 out.bin`。
- `search [-r] `:在整个分区中搜索文本或正则表达式 (-r)。自动支持 ASCII/UTF-8 和 UTF-16LE 编码(在 MFT 中很常见)。提取上下文及其物理偏移量。
- `find_orphans [limite]`:扫描 MFT (NTFS) 以查找孤儿文件(其父目录已被删除或不存在)。
### Ext4 系统 (Linux)
- `superblock`:读取 Linux 分区的主配置,显示 Inode、块和挂载时间戳。
- `ls / cd / cat / extract`:在 Ext4 的 Extent 层提供原生集成支持,用于列出文件夹(从 Inode 2 开始)并将原始文件提取到磁盘。
## 🗺️ 路线图(即将推出的功能)
- **完整的 E01 验证**:使 `hash_check` 命令能够自动读取并比较 EnCase 容器 (.e01) 中存储的哈希值与实时镜像的物理 MD5 值。
- **自动化 File Carving**:实现一个模块,通过跟踪磁盘未分配簇中的 *Magic Bytes*,盲提取和恢复已删除的文件(PDF、JPG、ZIP)。
- **语言扩展 (i18n)**:继续将 100% 的子系统和底层解析器翻译至多语言字典引擎(英语/西班牙语)。
标签:Python, 安全教育, 数字取证, 数据恢复, 无后门, 自动化脚本, 逆向工具