maxbendinelli/NTFSForParser

GitHub: maxbendinelli/NTFSForParser

一个教育性数字取证框架,用 Python 从底层解析 FAT32/NTFS/Ext4 文件系统和磁盘镜像,帮助学生理解文件系统结构并实践数据恢复技术。

Stars: 0 | Forks: 0

# NTFSForParser - 教育性取证框架
NTFSForParser Logo
**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, 安全教育, 数字取证, 数据恢复, 无后门, 自动化脚本, 逆向工具