rowingdude/analyzeMFT

GitHub: rowingdude/analyzeMFT

基于Python的NTFS主文件表解析工具,将原始MFT数据转换为多种结构化格式以支持数字取证和时间线分析。

Stars: 523 | Forks: 121

# AnalyzeMFT ![Tests](https://github.com/rowingdude/analyzeMFT/workflows/Test%20Suite/badge.svg) ![CI/CD](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8380808423130111.svg) [![codecov](https://codecov.io/gh/rowingdude/analyzeMFT/branch/master/graph/badge.svg)](https://codecov.io/gh/rowingdude/analyzeMFT) [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) **状态**:所有测试在 Windows、macOS 和 Linux 上的 Python 3.8-3.12 环境中均通过。 ## 快速开始 ``` # 安装 pip install analyzeMFT # 基本用法 python analyzeMFT.py -f MFT_FILE -o output.csv --csv # 生成测试用 MFT python -c "from src.analyzeMFT.test_generator import create_test_mft; create_test_mft('test.mft', 100)" # 使用多重输出进行分析 python analyzeMFT.py -f test.mft -o output.json --json --hash ``` ### 简介 **AnalyzeMFT** 是一个基于 Python 的工具,专为解析和分析 NTFS 主文件表 (MFT) 而设计。 它将原始二进制 MFT 数据转换为结构化、人类可读的输出,适用于数字取证、事件响应和文件系统分析。该工具支持多种输出格式,并提供详细的元数据提取功能,使调查人员能够检查 NTFS 卷的文件时间戳、属性和结构属性。 AnalyzeMFT 的主要目的是通过解码 MFT 记录来帮助取证分析师重建文件系统活动。每条记录都包含关键信息,例如文件名、创建和修改时间、文件大小以及目录关系。该工具处理活动条目和已删除条目,允许进行全面的时间线分析和工件恢复。它包含强大的错误处理功能,可管理损坏或不完整的 MFT 条目,确保即使在受损的文件系统上也能可靠处理。 ### 输出 支持多种输出格式以集成通用的取证工作流程。用户可以将结果导出为 CSV、JSON、XML 或 Excel 文件以供审查和报告。对于时间线分析,提供与 mactime 和其他工具兼容的 body file 格式。SQLite 导出创建用于查询和长期存储的关系数据库结构。TSK timeline 和 log2timeline CSV 格式允许直接导入已建立的取证平台。 ### 优化 该工具内置了性能优化,可有效处理大型 MFT 文件。处理过程以可配置的块进行,以管理内存使用,这在分析数百兆字节大小的 MFT 时尤为重要。哈希计算期间使用多进程以减少处理时间。用户可以根据系统资源调整工作进程数和块大小。进度指示器在长时间运行的操作期间提供实时反馈。 ### 功能 该工具支持可配置的分析配置文件以适应不同的操作需求。默认配置文件 (default) 提供适合通用场景的平衡处理。快速配置文件 (quick) 最大限度减少处理开销,用于快速分类。取证配置文件 (forensic) 启用最大数据提取,包括所有时间戳变体和扩展属性。性能配置文件 (performance) 调整内部设置,以优先考虑大型数据集的速度和资源效率。 对于包含数据运行 (data runs) 的文件记录属性,可以使用哈希计算。可以为常驻 (resident) 和非常驻 (non-resident) 数据生成 MD5、SHA256、SHA512 和 CRC32 哈希。此功能支持文件识别和完整性验证。哈希计算默认并行运行,进程数可配置。如果在受限环境中运行,用户可以禁用多进程。 配置通过命令行选项或 JSON 或 YAML 格式的外部文件进行管理。配置文件可以定义输出设置、分析配置文件、哈希选项和过滤条件。可以使用 --create-config 选项生成示例配置文件。--list-profiles 选项显示所有可用的内置配置文件及其描述。 使用 -f 选项后跟 MFT 文件的路径来指定输入。输出格式由文件扩展名或显式导出标志决定。-o 选项设置输出目标。导出到 SQLite 时,必须使用 --sqlite 标志。对于 CSV 输出,如果输出文件以 .csv 结尾,则不需要额外的标志。 该工具包含一个测试 MFT 生成器,用于开发和培训目的。使用 --generate-test-mft 选项,用户可以创建具有指定记录数的合成 MFT 文件。此功能对于验证工具功能、测试解析器或创建演示数据非常有用。 命令行选项包括详细程度控制,使用 -v 增加输出,使用 -d 进行调试级别日志记录。这些有助于在处理过程中诊断问题。导出选项允许选择格式而不依赖文件扩展名。性能调整选项包括用于记录批处理大小的 --chunk-size 和用于设置哈希线程数的 --hash-processes。 该工具包含结构化的帮助系统。使用 --help 运行脚本将显示所有可用的选项及其描述。用法摘要显示了必需和可选参数。为每类选项提供了详细说明,包括导出、性能、配置和调试设置。 ### 开发 版本 3.1.1 包括对代码质量和测试覆盖率的重大改进。测试套件现在包含 224 个涵盖所有主要组件的综合测试。GitHub Actions CI/CD 流水线确保了跨 Linux、Windows 和 macOS 上 Python 3.8-3.12 的代码质量。与 Bandit 的安全扫描和与 Safety 的依赖检查已集成到构建过程中。通过 Codecov 的代码覆盖率报告跟踪测试有效性。 计划中的导出格式包括用于威胁情报共享的 STIX/TAXII,以及与 Elasticsearch 和 Splunk 集成以进行集中式日志分析。导出到 Neo4j 图数据库将实现文件系统关系的可视化。用户将能够直接在工具内按日期范围、文件类型和大小过滤输出。可能会引入交互模式以允许逐步检查记录。 通过 GitHub 拉取请求接受对项目的贡献。开发人员必须确保与 Python 3.8 及更高版本兼容。所有新代码必须包含类型提示和全面的单元测试。测试套件使用 pytest 运行,覆盖率必须保持在 80% 以上。代码应遵循 PEP 8 指南并具有跨平台兼容性。必须更新文档以反映任何新功能或更改。 ## 免责声明 此工具按“原样”提供,用于合法的取证和安全分析目的。用户有责任在分析任何文件系统或 MFT 数据之前确保拥有适当的授权。作者对滥用本软件不承担任何责任。
标签:API安全, CSV输出, HTTPS请求, incident-response, JSON输出, MFT解析, NTFS, Python, Timestomping检测, Windows取证, 事件追踪, 二进制分析, 二进制发布, 云安全运维, 元数据提取, 取证工具, 哈希计算, 安全规则引擎, 库, 应急响应, 开源工具, 数字取证, 数据恢复, 数据解析, 文件记录, 无后门, 磁盘取证, 结构化数据, 网络安全, 自动化脚本, 进程保护, 逆向工具, 隐私保护