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, 数字取证, 数据提取, 文件分类, 自动化导出, 自动化脚本