zrnge/powershell-email-extractor
GitHub: zrnge/powershell-email-extractor
一个零依赖的纯 PowerShell 脚本,用于从 .eml 文件中递归提取附件并生成哈希,辅助安全人员进行恶意软件和钓鱼邮件排查。
Stars: 0 | Forks: 0
# Extract-EmlAttachments
使用**纯 PowerShell** 从 `.eml` 文件中提取附件——无需外部库,无需 NuGet。专为 Windows PowerShell 5.1 构建(可在 Windows Sandbox 中运行),旨在对已保存或隔离的邮件进行恶意软件/钓鱼排查。
## 功能
- 递归解析 MIME(嵌套的 `multipart/*` 和 `message/rfc822` 包装器)
- 解码 `base64` 和 `quoted-printable`
- 处理 RFC 2231 文件名(`name*0=`、`filename*=UTF-8''…`)
- 规范化换行符并展开折叠的标头
- 净化受攻击者控制的文件名(路径遍历、保留名称)
- 为每个文件输出 **SHA-256 + magic bytes**,无需打开即可验证类型
## 用法
```
# 单文件
.\Extract-EmlAttachments.ps1 -EmlPath "C:\Mail\message.eml" -SavePath "C:\Attachments"
# 整个文件夹,包含 inline parts,编写 triage CSV
.\Extract-EmlAttachments.ps1 -Folder "C:\Mail" -SavePath "C:\Attachments" -IncludeInline -CsvLog "C:\Attachments\_triage.csv"
```
如果出现脚本执行错误,请允许其在当前会话中运行:
```
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
```
## 参数
| 参数 | 描述 |
|-----------|-------------|
| `-EmlPath` | 单个 `.eml` 文件的路径 |
| `-Folder` | 处理文件夹中的所有 `.eml` 文件 |
| `-SavePath` | 输出目录(默认为 `C:\Attachments`) |
| `-IncludeInline` | 同时提取 `Content-Disposition: inline` 部分 |
| `-CsvLog` | 将排查表(哈希、类型、magic bytes)写入 CSV |
如果未提取到任何内容,脚本将打印 MIME 结构转储,以帮助诊断布局。
## ⚠️ 安全提示
提取的文件可能是活跃的恶意软件,尤其是来自隔离区的文件。请在隔离的 VM/沙箱中运行,不要打开输出结果,并根据威胁情报检查 SHA-256。
## 许可证
MIT
标签:AI合规, IPv6, Libemu, MIME, PowerShell, 库, 应急响应, 邮件解析