gaiacalamari/XT_ExtractDocsMail-

GitHub: gaiacalamari/XT_ExtractDocsMail-

X-Ways Forensics 的 X-Tension 插件,通过命令行自动按类别导出取证镜像中的文件并重建原始路径。

Stars: 1 | Forks: 0

# XT_ExtractDocsMail 一个用于 **X-Ways Forensics (x64)** 的 X-Tension,可自动**按类别**导出取证镜像中的文件,并重建每个文件的原始路径。它完全设计为通过命令行运行:只需一条命令,无需 GUI 交互。 ## 功能说明 对于卷快照中的每个文件,它会读取 X-Ways 分配的类别(`XWF_GetItemType`),并将文件内容复制到以下文件夹结构中: ``` \\\ ``` 类别名称不是硬编码的:该工具使用 X-Ways 返回的任何类别,因此会导出现有的**所有**类别(文档、电子表格、演示文稿、图片、视频、电子邮件、归档、“其他/未知类型”等),而不仅仅是固定的子集。 ## 用法 ``` set "XT_OUT=Y:\Export" && "C:\xwf21.7\xwforensics64.exe" "NewCase:W:\xways" "AddImage:Y:\Images\*.E01" RVS:~ "XT:C:\xwf21.7\XTension\XT_ExtractDocsMail.dll" auto ``` ## 重要前提条件 该工具仅导出 X-Ways **已分配类别**的文件。类别由**文件类型验证**填充,这是 *Refine Volume Snapshot* (RVS) 操作之一。 - 在上述命令中,`RVS:~` 会在 `XT:` 之前运行,因此会在导出之前对快照进行优化。请确保您的 RVS 设置(或您使用的 `.dlg`)包含文件类型验证。 - 如果您在未经优化的快照上以*独立*模式运行 X-Tension(即使用 `XT:` 而不包含验证类型的 RVS),项目将没有类别,并且**不会导出任何内容**。这是导致“看起来正常运行但无输出”的最常见原因。 ## 特性 - **保留原始路径**,通过向上遍历每个项目的父级项来重建路径。 - 处理**长路径**(`\\?\`):在 260 字符限制处不会失败;也可处理 Windows 保留名称。 - **防冲突**:共享相同路径的文件(例如恢复/删除的项目)会在扩展名之前保存为 `_`,而不是覆盖原有文件。 - 以**只读**方式打开卷快照。 - 在“消息”窗口中提供**摘要日志**(每个证据对象及整体的导出文件数/错误数)。 ## 两种模式(均为自动) 1. **RVS** — 使用 `RVS:~ "XT:...XT_ExtractDocsMail.dll"`:X-Ways 会在 Refine Volume Snapshot 期间为每个项目调用此 X-Tension。这是推荐的方式,因为它可以确保已经分配了类型(以及随后的类别)。 2. **独立 / RUN** — 从菜单或命令行使用 `"XT:...XT_ExtractDocsMail.dll"` 且不带 RVS:该 X-Tension 会枚举案件本身的所有证据对象并导出。要求文件类型已经过验证。 ## 安装说明 两种方式: **A. 预编译 DLL(推荐大多数用户使用)** 从 [Releases](../../releases) 页面下载 `XT_ExtractDocsMail.dll`,并将其放在您保存 X-Tension 的任意位置(例如 `C:\xwf21.7\XTension\`)。按照*用法*中所示,使用 `XT:` 参数进行引用。 **B. 从源码编译** 请参阅下方的[编译](#build)说明。本仓库已包含 `XT_API.pas`,因此无需外部依赖。 ## 环境变量 | 变量 | 必需 | 说明 | |-----------|----------|-------------| | `XT_OUT` | 否 | 输出根文件夹。如果未设置,则依次回退到 `XT_DOCS_OUT`,然后是默认的 `D:\Export`。 | | `XT_CATS` | 否 | 可选过滤器:以逗号分隔的类别子字符串列表,需为小写且不带空格。如果未设置,则导出所有类别。 | 过滤器示例: ``` set "XT_CATS=document,spreadsheet,presentation,picture,video,mail" ``` ## 要求 - X-Ways Forensics **x64**(已通过 21.x 系列测试;类别检索需要 v18.9 或更高版本)。 - Windows。 - 编译环境:**Lazarus 2.x / FreePascal 3.2.x**。 ## 编译 1. 在 Lazarus 中打开 `XT_ExtractDocsMail.lpr`(`XT_API.pas` 已包含在仓库中的同级目录下)。 2. Project → Compiler Options → Target OS/CPU:**Win64 / x86_64**。 3. 编译。输出结果为 `XT_ExtractDocsMail.dll`。 ## 仓库结构 ``` XT_ExtractDocsMail/ ├─ XT_ExtractDocsMail.lpr # X-Tension source ├─ XT_API.pas # X-Tension API binding (from hmrc/XT_XWF-AutoCTR, unmodified) ├─ README.md ├─ LICENSE ├─ gitignore ├─ build ├─ test E01 └─ XT_ExtractDocsMail.dll └─ NOTICE ``` 编译后的 `XT_ExtractDocsMail.dll` 通过 [Releases](../../releases) 页面分发,而不是提交到源码树中。 ## 致谢与许可 - 基于 [hmrc/XT_XWF-AutoCTR](https://github.com/hmrc/XT_XWF-AutoCTR) (Ted Smith / HMRC) 的 X-Tension API 构建,该项目提供了 `XT_API.pas`。 - 基于 **Apache License 2.0** 发布,与上游项目保持一致。请参阅 `LICENSE` 和 `NOTICE`。 X-Ways Forensics 是 X-Ways Software Technology AG 的商标。本项目是一个独立的第三方 X-Tension,不隶属于 X-Ways Software Technology AG,也未获得其认可。
标签:X-Ways Forensics, 数字取证, 数据提取, 文件分类, 自动化导出, 自动化脚本