ostafen/digler
GitHub: ostafen/digler
一款基于 Go 的磁盘取证与文件恢复工具,通过文件签名在无需依赖文件系统元数据的情况下从磁盘镜像或物理设备中恢复已删除数据。
Stars: 1177 | Forks: 68
Digler - Go Deep. Get Back Your Data
⚠️ 注意:Digler 目前处于早期开发阶段 (v0.1.0)。可能存在一些 Bug。请报告问题!
## 为什么选择 Digler?
尽管市面上有许多数据恢复工具,但很少有工具能将简洁性、灵活性与现代设计,同深度磁盘分析和有效的文件提取完美结合。
Digler 的诞生正是为了填补这一空白,它提供了一个精简且可通过插件扩展的数据恢复工具,既强大又易于使用。它同时提供了**命令行界面和用户友好的桌面应用程序**,让专业人员和普通用户都能轻松上手。无论您是偏好 CLI 的速度与可编写脚本特性,还是青睐可视化界面的便利性,Digler 都能适应您的工作流程,让您无需面对笨重的 GUI 或碎片化工具的复杂性。
Digler 使用 Go 语言构建,充分利用了该语言在性能、跨平台支持和可维护性方面的优势,旨在为当今的数据恢复挑战提供快速且可靠的解决方案。
## 功能特性
* **广泛的磁盘镜像和原始设备支持**:分析多种磁盘镜像格式(`.dd`、`.img` 等)或直接访问物理磁盘。
* **与文件系统无关的分析**:无论底层文件系统(例如 NTFS、FAT32、ext4)是什么,甚至在元数据丢失的情况下,都能恢复已删除的文件。
* **基于插件的可扩展性**:通过插件支持自定义文件扫描器,简化了与新文件格式的集成。
* **报告生成功能**:生成符合 `Digital Forensics XML (DFXML)` 格式的详细报告,记录恢复的数据和分析结果。
* **扫描后数据恢复**:利用生成的 DFXML 报告精确恢复特定文件。
* **双界面选择**:通过快速直观的命令行界面或现代桌面应用程序使用 Digler——选择最适合您工作流程的界面。
## 安装说明
**从源码构建:**
```
git clone https://github.com/ostafen/digler.git
cd digler
make build
```
**从预编译二进制文件安装:**
Linux、macOS 和 Windows 的预编译二进制文件可在 [Releases 页面](https://github.com/ostafen/digler/releases) 获取。
## CLI 用法
Digler 遵循一个简单而强大的工作流程:**先扫描,后恢复**。这种方法让您可以在提取任何文件之前,对磁盘或镜像进行彻底分析。
### 1. 扫描磁盘镜像或设备
```
foo@bar$ digler scan
```
示例:
###
```
foo@bar$ digler scan dfrws-2006-challenge.raw
```
或者,扫描整个磁盘分区:
###
```
foo@bar$ digler scan /dev/nvme0n1 # or C: on Windows
```
默认情况下,该命令会生成一份描述扫描结果的详细 DFXML 报告,以及一份详细的执行日志。不过,您也可以选择指定一个转储目录,以便在扫描期间立即恢复文件。
```
foo@bar$ --dump
```
### 2. 将扫描结果挂载为文件系统(仅限 Linux)
```
foo@bar$ digler mount --mountpoint /path/to/mnt
```
示例:
```
digler mount dfrws-2006-challenge.raw report.xml --mountpoint /mnt/recover
```
这会挂载一个 FUSE 文件系统,允许您直接从扫描报告中浏览和访问已恢复的文件,而无需先进行任何复制操作。
### 3. 根据扫描报告恢复文件
```
foo@bar$ digler recover --dir /path/to/dir
```
示例:
```
foo@bar$ digler recover dfrws-2006-challenge.raw report.xml --dir ./recover
```
### 测试数据集
为了帮助您开始实际测试和评估,以下是一些数字取证研究中常用的公开磁盘镜像数据集:
- **DFRWS 取证挑战赛镜像**
[DFRWS 2006 挑战赛](https://www.dropbox.com/scl/fi/il7qier2mg7azy13znmvc/dfrws-2006-challenge.zip?rlkey=iueltr1kelpcbdhctnabt2gfn&e=1&dl=0) — 用于恢复挑战和基准测试的经典取证镜像。
- **Digital Corpora**
[Digital Corpora 存储库](https://digitalcorpora.org/) — 包含磁盘镜像、内存转储等在内的丰富取证数据集集合。
- **国家标准与技术研究院 (NIST) 数据集**
[NIST 计算机取证参考数据集 (CFReDS)](https://www.cfreds.nist.gov/) — 用于研究和工具评估的各种取证数据集。
您可以下载这些镜像,并使用 Digler 的 `scan` 和 `recover` 命令进行实验和验证您的设置。
### 支持的文件类型
即使处于早期阶段,Digler 已经能够恢复多种文件类型,包括文档、图像、音频和压缩包。
要查看支持的格式完整列表,请运行:
```
foo@bar$ digler formats
```
## 通过插件添加自定义扫描器
Digler 支持插件架构,允许您通过自定义文件扫描器来扩展该工具。这使得添加对新文件格式的支持或专门的提取逻辑变得容易,而无需修改核心代码。
### 插件接口
您的插件必须实现以下接口:
```
type FileScanner interface {
Ext() string // Returns the file extension this scanner handles
Description() string // A brief description of the file type
Signatures() [][]byte // Byte signatures used to identify the file type
ScanFile(r *Reader) (*ScanResult, error) // Logic to scan and recover files from a Reader
}
```
当您的插件准备就绪后,将其源文件放入 plugins/ 目录,并通过运行以下命令编译所有插件:
```
foo@bar$ make plugins
```
这会将您的插件构建为 `.so` 文件,并将它们放入 **bin/plugins/** 文件夹中,随时可供 Digler 加载。
要验证您的插件是否已正确加载,请运行:
```
foo@bar$ digler formats --plugins ./bin/plugins
```
此命令将列出所有受支持的文件格式,包括由您的自定义插件提供的格式。
最后,在扫描时使用相同的 --plugins 标志来启用您的插件:
```
foo@bar$ digler scan --plugins ./bin/plugins
```
## 贡献指南
编写一个全面的文件提取工具是一项复杂的挑战。每种受支持的文件类型通常都需要一个特定格式的解码器,才能正确识别、验证和重建数据。这使得 Digler 的开发既具有较高的技术要求,又具备高度的模块化特性——这也是开源协作的完美场景。
我们欢迎各种形式的贡献,特别是在以下领域:
- 实现新的文件格式解码器
- 改进现有的提取启发式算法
- 优化性能
- 增强 CLI 界面
- 编写测试、文档或使用示例
无论您是熟悉 Go 语言,还是仅仅对数字取证感兴趣,我们都非常感谢您的帮助。
### 贡献准备
在开始之前,**请先提交一个 issue**(或选择一个现有的 issue)来讨论您的想法或计划进行的更改。这有助于避免重复工作,并确保开发保持一致。
**请在开始之前阅读我们的[行为准则](CODE_OF_CONDUCT.md)。**
一旦准备就绪,请 Fork 本仓库并提交您的 Pull Request!
## 许可证
Digler 基于 **MIT 许可证** 发布。标签:EVTX分析, ext4, FAT32, Go语言, HTTP工具, NTFS, Raw Device, 二进制分析, 云安全运维, 删除文件恢复, 域渗透, 库, 应急响应, 开源, 插件化, 数字取证, 数据恢复, 文件雕刻, 无文件系统依赖, 日志审计, 桌面应用, 电子数据取证, 磁盘分析, 磁盘取证, 程序破解, 系统triage, 网络安全审计, 自动化脚本, 调试插件, 镜像分析