Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder
GitHub: Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder
专为 Cloudflare DLP 取证副本设计的解码工具,支持命令行和交互式界面,简化数据泄露分析过程。
Stars: 0 | Forks: 0
# Cloudflare DLP 取证副本解码器
[](https://github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder/actions)
[](https://goreportcard.com/report/github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder)
一个功能强大的命令行工具和交互式 TUI,用于从压缩日志文件中解码和提取 Cloudflare DLP(数据防泄漏)取证副本。
## ✨ 功能
- 🚀 **原生 Go 实现**:单一二进制文件,无外部依赖
- 🎨 **交互式 TUI**:使用 [bubbletea](https://github.com/charmbracelet/bubbletea) 构建的终端用户界面
- 📦 **跨平台**:提供 Linux、macOS 和 Windows (amd64 & arm64) 的预编译二进制文件
- 🔄 **功能完全对等**:与原始 Shell 脚本 100% 兼容
- ✅ **测试完善**:覆盖率高的全面单元测试
- 🎯 **易于使用**:适用于脚本和自动化操作的简易 CLI
### 工作原理
1. **解压缩**:提取 `.log.gz` 文件
2. **JSON 格式化**:美观打印日志结构
3. **载荷解码**:Base64 解码载荷
4. **Gzip 处理**:自动解压缩 gzipped 载荷
5. **智能检测**:根据头部信息智能检测并处理内容
## 📦 安装
### 通过包管理器安装
**Homebrew (macOS 和 Linux)**
```
brew install devolvio-b-v/tap/cf-dlp-decode
```
**Winget (Windows)**
```
winget install Devolvio-B-V.cf-dlp-decode
```
### 下载预编译二进制文件
从 [发布页面](https://github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder/releases) 下载适用于您平台的最新版本:
```
# Linux (amd64)
curl -L -o cf-dlp-decode https://github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder/releases/latest/download/cf-dlp-decode-linux-amd64
chmod +x cf-dlp-decode
sudo mv cf-dlp-decode /usr/local/bin/
# macOS (arm64)
curl -L -o cf-dlp-decode https://github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder/releases/latest/download/cf-dlp-decode-darwin-arm64
chmod +x cf-dlp-decode
sudo mv cf-dlp-decode /usr/local/bin/
# Windows (amd64)
# 下载 cf-dlp-decode-windows-amd64.exe 并添加至 PATH
```
### 从源码构建
要求:
- Go 1.21 或更高版本
```
git clone https://github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder.git
cd cloudflare-dlp-forensic-copy-decoder
make build
# 或直接安装
go install github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder/cmd/cf-dlp-decode@latest
```
## 🚀 使用说明
### 交互式 TUI 模式
启动终端用户界面以获得交互式体验:
```
# 启动带文件浏览器的 TUI(无参数)
cf-dlp-decode
# 启动 TUI 并指定文件
cf-dlp-decode --tui captured-data.log.gz
```
注意:现在无参数运行 `cf-dlp-decode` 默认会启动带有文件浏览器的交互式 TUI。
提供文件名(位置参数或 `--input`)即可在非交互式 CLI 模式下运行该工具。
**TUI 功能:**
- **交互式文件浏览器**,支持 vim 风格导航
- **Lazygit 风格的 UI**,带有颜色编码界面
- 带滚动功能的解码内容可视化预览
- 轻松的文件导航和选择
- 导出解码后的载荷
- 所有操作的键盘快捷键
**键盘控制:**
*文件浏览器模式:*
- `↑↓` / `j/k` - 向上/下导航
- `Enter` - 打开目录或选择 .log.gz 文件
- `h` - 返回主目录
- `g` / `G` - 跳转到列表顶部/底部
- `q` - 退出
*预览模式:*
- `↑↓` / `j/k` - 向上/下滚动
- `d` / `u` - 向下/上翻页(半页)
- `g` / `G` - 跳转到顶部/底部
- `n` / `p` - 下一个/上一个载荷(当文件包含多个载荷时)
- `s` / `e` - 保存/导出解码后的载荷
- `b` - 返回文件浏览器
- `q` - 退出
*错误模式:*
- `t` - 使用强制文本模式重试解码(当 content-type 不受支持时)
### 非交互式 CLI 模式
适用于脚本和自动化:
```
# 基本用法
cf-dlp-decode captured-data.log.gz
# 指定自定义输出路径
cf-dlp-decode --input captured-data.log.gz --output decoded.json
# 为不支持的内容类型强制文本解码
cf-dlp-decode --try-text suspicious-upload.log.gz
# 从 stdin 读取
cat captured-data.log.gz | cf-dlp-decode --input -
# 详细输出
cf-dlp-decode --verbose captured-data.log.gz
# 覆盖已有文件(标志可置于文件名之前或之后)
cf-dlp-decode --overwrite captured-data.log.gz
cf-dlp-decode captured-data.log.gz --overwrite
```
## 📝 命令行选项
| 选项 | 描述 |
|--------|-------------|
| `--input PATH` | 输入的 .log.gz 文件(或 - 表示标准输入) |
| `--output PATH` | 输出文件路径(如未指定则自动生成) |
| `--tui` | 启动交互式 TUI 模式 |
| `--try-text` | 即使 content-type 不受支持也尝试文本解码 |
| `--overwrite` | 如果输出文件已存在则覆盖 |
| `--verbose` | 启用详细输出,显示详细错误信息 |
| `--help` | 显示帮助信息 |
| `--version` | 显示版本信息 |
## 📂 输出文件
给定输入文件 `example.log.gz`,该工具将生成:
| 文件 | 描述 |
|------|-------------|
| `example.log.json` | 已解压并格式化的日志,包含头部和元数据 |
| `example.payload.json` | 解码后的载荷(适用于 JSON 内容类型) |
| `example.payload.txt` | 解码后的载荷(适用于 text/form-data 内容类型) |
### 多载荷文件
| 文件 | 描述 |
|------|-------------|
| `example.1.log.json` | 载荷 1 的日志元数据 |
| `example.1.payload.json` | 解码后的载荷 1 (JSON) |
| `example.2.log.json` | 载荷 2 的日志元数据 |
| `example.2.payload.json` | 解码后的载荷 2 (JSON) |
| … | … |
## 🔍 支持的内容类型
该工具自动处理:
- **JSON**: `application/json*` → `.payload.json`
- **XML**: `application/xml*`, `text/xml*` → `.payload.txt`
- **HTML**: `text/html*` → `.payload.txt`
- **纯文本**: `text/plain*` → `.payload.txt`
- **CSV**: `text/csv*`, `application/csv*` → `.payload.txt`
- **JavaScript**: `application/javascript*`, `text/javascript*` → `.payload.txt`
- **TypeScript**: `application/typescript*`, `text/typescript*` → `.payload.txt`
- **表单数据**: `multipart/form-data*`, `application/x-www-form-urlencoded*` → `.payload.txt`
- **通用文本**: 任何 `text/*` 内容类型 → `.payload.txt`
## 🛠️ 开发
### 构建
```
# 为当前平台构建
make build
# 运行测试
make test
# 运行测试并生成覆盖率报告
make test-coverage
# 格式化代码
make fmt
# 运行 linter
make vet
# 为所有平台交叉编译
make cross-build
# 清理构建产物
make clean
```
### 运行测试
```
# 运行所有测试
go test ./...
# 带覆盖率运行
go test -cover ./...
# 使用竞态检测器运行
go test -race ./...
```
### 项目结构
```
.
├── cmd/cf-dlp-decode/ # CLI entry point
├── internal/
│ ├── decoder/ # Core decoding logic
│ └── ui/ # TUI implementation
├── pkg/utils/ # Utility functions
├── legacy/ # Original shell script
├── .github/workflows/ # CI/CD workflows
├── Makefile # Build automation
├── go.mod # Go module definition
└── README.md # This file
```
## 🔄 从 Shell 脚本迁移
原始的 Shell 脚本已被移至 `legacy/` 目录,仍然可供使用。Go 实现提供:
✅ **相同行为** - 相同的解码算法和输出格式
✅ **相同标志** - 兼容的命令行界面
✅ **更好的性能** - 原生代码执行更快
✅ **无依赖** - 无需 jq、gzip 或 base64 工具
✅ **增强功能** - 交互式 TUI 模式和更好的错误处理
请参阅 [legacy/README.md](/legacy/README.md) 了解更多差异和迁移注意事项。
### 开发指南
- 为新功能编写测试
- 确保所有测试通过 (`make test`)
- 使用 `go fmt` 格式化代码
- 提交前运行 `go vet`
- 根据需要更新文档
## 📜 许可证
本项目按原样提供,用于 Cloudflare DLP 取证分析。
## 📦 包管理器发布
本项目通过 GitHub Actions 在每次发布时自动发布到多个包管理器:
- **Homebrew**:通过 GoReleaser 自动更新到 [homebrew-tap](https://github.com/Devolvio-B-V/homebrew-tap) 仓库
- **Winget**:通过 wingetcreate 自动提交(需要 fork [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs))
## ⚠️ 免责声明
本工具仅用于合法的取证分析和安全调查目的。在分析任何数据之前,请务必确保您拥有适当的授权。
## 🔗 链接
- **仓库**:https://github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder
- **问题**:https://github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder/issues
- **发布**:https://github.com/Devolvio-B-V/cloudflare-dlp-forensic-copy-decoder/releases
## 🙏 致谢
- 使用 [bubbletea](https://github.com/charmbracelet/bubbletea) 构建 TUI
- 灵感来源于对更好的 DLP 取证工具的需求
标签:Base64解码, Cloudflare, DLP, EVTX分析, Go语言, gzip解压, JSON格式化, MITRE ATT&CK, PB级数据处理, 交互式TUI, 代码示例, 压缩文件处理, 安全运维, 数据分析, 数据泄露预防, 文件解码, 日志处理, 日志审计, 程序破解, 终端界面