Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21' # Or your project's Go version
go-version: '1.23'

- name: Configure Git
run: |
Expand Down
55 changes: 55 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders of the **Digler** project pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We are committed to fostering a welcoming, respectful, and inclusive environment for all.

---

## Our Standards

Examples of behavior that contributes to a positive environment include:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Giving and gracefully accepting constructive feedback
- Showing empathy toward other community members

Examples of unacceptable behavior include:

- Trolling, insulting or derogatory comments
- Personal or political attacks
- Harassment of any kind
- Publishing others’ private information without consent
- Other conduct which could reasonably be considered inappropriate

---

## Our Responsibilities

Project maintainers are responsible for clarifying standards of acceptable behavior and are expected to take appropriate action in response to any instances of unacceptable behavior.

They have the right to remove, edit, or reject contributions that violate this Code of Conduct, and to ban temporarily or permanently any contributor for other behaviors deemed inappropriate.

---

## Scope

This Code of Conduct applies within all project spaces—such as GitHub issues, pull requests, discussions, and Discord/Slack if applicable—as well as in public spaces when an individual is representing the project.

---

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project maintainers at **[add your contact email here]**. All reports will be reviewed and investigated promptly and fairly.

---

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1.
Available at: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html

[homepage]: https://www.contributor-covenant.org
49 changes: 38 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
</p>
<h2 align="center">Digler - Go Deep. Get Back Your Data</h2>

<p align="center">
⚠️ <strong>Note:</strong> Digler is in early development (v0.0.1). Some bugs may exist. Please report issues!
</p>

<p align="center">
<a href="https://github.com/ostafen/digler/actions/workflows/build.yml">
<img src="https://github.com/ostafen/digler/actions/workflows/build.yml/badge.svg" alt="Build Status">
Expand All @@ -11,21 +15,25 @@

## Why Digler?

While many data recovery tools exist, there wasn’t yet a solution written in Go—a language well-suited for building fast, reliable, and maintainable software. Digler fills that gap by offering a simple, efficient, and cross-platform alternative focused on deep disk analysis and recovery.
While many data recovery tools exist, few offer a combination of simplicity, flexibility, and modern design focused on deep disk analysis and effective file carving.

Digler was created to fill this gap by providing a streamlined, reliable command-line tool that makes data recovery easier and more efficient—without the complexity of heavyweight GUIs or fragmented workflows.

Built in Go, Digler leverages the language’s strengths in performance, cross-platform support, and maintainability to deliver a fast and dependable solution for today’s data recovery challenges.


## Features

* **Broad Disk Image and Raw Device Support**: Analyze a wide array of disk image formats (`.dd`, `.img`, etc...) or directly access physical disks.

* **File System Agnostic Analysis**: Recover deleted files regardless of the underlying file system (e.g., NTFS, FAT32, ext4), even when metadata is lost.

* **Reporting Capabilities**: Generate detailed reports, compliant with the `Digital Forensics XML (DFXML)` format, of recovered data and analysis findings.

* **Post-Scan Data Recovery**: Utilize the generated DFXML reports to precisely recover deleted or fragmented files.

* **Intuitive Command-Line Interface**: A user-friendly CLI designed for efficiency and ease of use.

* **Reporting Capabilities**: Generate detailed reports, compliant with the `Digital Forensics XML (DFXML)` format, of recovered data and analysis findings.


---

## Installation
Expand Down Expand Up @@ -94,14 +102,31 @@ Example:
foo@bar$ digler recover dfrws-2006-challenge.raw report.xml --dir ./recover
```

### Test Datasets

To help you get started with real-world testing and evaluation, here are some publicly available disk image datasets commonly used in digital forensics research:

- **DFRWS Forensic Challenge Images**
[DFRWS 2006 Challenge](https://www.dropbox.com/scl/fi/il7qier2mg7azy13znmvc/dfrws-2006-challenge.zip?rlkey=iueltr1kelpcbdhctnabt2gfn&e=1&dl=0) — a classic forensic image used for recovery challenges and benchmarking.

- **Digital Corpora**
[Digital Corpora Repository](https://digitalcorpora.org/) — a rich collection of forensic datasets including disk images, memory dumps, and more.

- **National Institute of Standards and Technology (NIST) Datasets**
[NIST Computer Forensics Reference Data Sets (CFReDS)](https://www.cfreds.nist.gov/) — a wide variety of forensic datasets for research and tool evaluation.

You can download these images and use Digler’s `scan` and `recover` commands to experiment and validate your setup.


### Supported File Types

Digler allows for the recovery of lost or deleted files based on their unique headers and footers, even when file system metadata is corrupted or missing. Below is a list of all currently supported file formats:
Even in its early stages, Digler is already capable of recovering a wide range of file types, including documents, images, audio, and archives.

- **Documents**: docx, xlsx, pdf
- **Images**: jpg, png, gif, bmp, tiff, raw
- **Audio**: mp3, wav, flac
- **Archives**: zip
To see the complete list of supported formats, run:

```bash
foo@bar$ digler formats
```

## Contributing

Expand All @@ -112,14 +137,16 @@ We welcome contributions of all kinds, especially in areas like:
- Implementing new file format decoders
- Improving existing carving heuristics
- Optimizing performance
- Enhancing the CLI or UX
- Enhancing the CLI interface
- Writing tests, docs, or usage examples

Whether you're familiar with Go or just interested in digital forensics, your help is appreciated.

### Getting Started

Before you start, **please open an issue** to discuss your idea or planned changes. This helps avoid duplicate work and keeps development aligned.
Before you start, **please open an issue** (or pick an existing one) to discuss your idea or planned changes. This helps avoid duplicate work and keeps development aligned.

**Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before getting started.**

Once you're ready, fork the repository and submit your pull request!

Expand Down
2 changes: 2 additions & 0 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,6 @@ func PrintLogo() {
fmt.Printf("Commit: %s\n", env.CommitHash)
fmt.Printf("Build Time: %s\n", env.BuildTime)
fmt.Println(" ")
fmt.Println("© 2025 Stefano Scafiti. Licensed under MIT License.")
fmt.Println(" ")
}
Loading