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, 库, 应急响应, 邮件解析