Features β’ Requirements β’ Installation β’ Usage β’ Formats β’ Performance β’ Docs β’ License
RECLAIM is a professional-grade, high-performance, cross-platform file recovery tool for recovering deleted files from RAW devices using signature-based file carving.
Built in Rust with focus on:
- β‘ Performance: 940 MiB/s footer search throughput
- π Security: Multi-layer validation + U64 overflow protection
- π― Accuracy: Rigorous integrity verification
- π Cross-Platform: Windows, Linux, macOS native support
- π Reliability: Checkpoint + recovery system
- π§΅ Parallelization: Multi-threading with linear scaling
- β¨ Improvements: Rate limiting, U64 safe, checkpoint management
Recover your data safely through advanced file carving techniques (header/footer detection).
- Signature-based file carving - Automatic detection by header/footer
- Rigorous validation - Format-specific integrity verification
- Image reconstruction - Incomplete JPEG/PNG recovery
- Automatic detection - Identifies format by byte pattern
- Checkpoint system - Resume interrupted recoveries
- Rate limiting - Intelligent bandwidth control (100 MB/s default)
| Feature | Benefit | Status |
|---|---|---|
| U64 Overflow Protection | Safe for disks > 4GB | β Implemented |
| Multi-threading | 4-6x speedup on SSD/NVMe | β Feature-gated |
| Rate Limiter | I/O flood protection | β Sliding window |
| Checkpoint Manager | Automatic cleanup | β Versioned |
| ValidationReport Public | Safe inspection interface | β Public methods |
| CheckpointManager | Full lifecycle management | β Automatic |
| Format | Header | Footer | Max Size | Validation | Status |
|---|---|---|---|---|---|
| JPEG | FF D8 FF |
FF D9 |
50 MB | β Complete | β Active |
| PNG | 89 50 4E 47 0D 0A 1A 0A |
49 45 4E 44 AE 42 60 82 |
50 MB | β Complete | β Active |
25 50 44 46 |
25 25 45 4F 46 |
100 MB | β Partial | β Active | |
| ZIP | 50 4B 03 04 |
50 4B 05 06 |
500 MB | β Partial | β Active |
| BMP | 42 4D |
None | 50 MB | β Active | |
| GIF | 47 49 46 38 |
00 3B |
20 MB | β Partial | β Active |
| OS | Support | Implementation | Requirement |
|---|---|---|---|
| Windows 10+ | β Native | Windows API (CreateFileW) | Admin |
| Linux (5.0+) | β Native | File syscalls + ioctl | sudo |
| macOS 10.15+ | β Native | File syscalls (rdisk) | sudo |
| Feature | Description | Status |
|---|---|---|
| π Checkpoints | Resume recoveries | β JSON + versioning |
| π Telemetry | Performance metrics | β Arc |
| ποΈ Rate Limiting | Bandwidth control | β Sliding window 1s |
| π₯ Health Checks | 5 pre-operation validations | β Device, output, disk, memory, perms |
| π‘οΈ Security | Path traversal + validation | β Defense in depth |
| π Progress Visual | Real-time indicator | β indicatif with ETA |
| πΎ Buffer Pool | RAII with auto-release | β 8.7x vs malloc |
| π§΅ Parallelization | Multi-threading (feature flag) | β Linear scaling β€8T |
| π§ͺ Validation | SHA-256 + metadata | β Per-format |
| π¨ Reconstruction | JPEG/PNG incomplete | β jpeg-decoder + image |
ββ Footer Search 940 MiB/s β
Excellent
ββ File Carving 416 MiB/s β
Very Good
ββ Buffer Pool ops 13 ns β‘ Ultra-fast
ββ RecoveryStats (U64) 1.5 ns β‘ Lock-free
ββ Rate Limiter <1ms β
Sliding window
ββ Multithreaded (4T) 207 Β΅s β
Scalable
ββ Multithreaded (8T) 415 Β΅s β
Linear
| Disk Type | Speed | Time for 1TB | Notes |
|---|---|---|---|
| HDD 7200 RPM | 50-100 MB/s | ~2.8 hours | Single-thread better |
| SSD SATA | 200-500 MB/s | ~42 minutes | 4 threads ideal |
| SSD NVMe | 500+ MB/s | ~15-30 minutes | 8 threads ideal |
Note: Times with multi-threading enabled via --features parallel
| Requirement | Windows | Linux | macOS |
|---|---|---|---|
| Min Version | 10 | Kernel 5.0+ | 10.15+ |
| Architecture | x86_64 | x86_64 | x86_64 + arm64 |
| Privileges | Admin | sudo | sudo |
- Rust: 1.70 or higher (install here)
- Cargo: Included with Rust
- Git: For cloning repository (optional)
| Resource | Minimum | Recommended |
|---|---|---|
| RAM | 512 MB | 2 GB |
| Disk | 100 MB (app) | 1 GB (app + buffer) |
| CPU | 1 core | 4+ cores |
Single-thread (default):
cargo install --path .
# Verify
reclaim --versionMulti-thread (optimized for SSD/NVMe):
cargo install --path . --features parallel
# Or with all features
cargo install --path . --features fullβ Simplest | β±οΈ ~2 minutes
# Clone repository
git clone https://github.com/Paulogb98/reclaim.git
cd reclaim
# Compile (release = optimized)
cargo build --release
# Or with features
cargo build --release --features parallel
# Executable at: target/release/reclaim
./target/release/reclaim --help
# Install globally (optional)
cargo install --path .β Full control | β±οΈ ~3 minutes
brew install reclaimβ Native macOS integration | β±οΈ ~1 minute
Download from: https://github.com/Paulogb98/reclaim/releases
β No compilation needed | β±οΈ ~30 seconds
reclaim <COMMAND> [OPTIONS]reclaim recover --drive <LETTER/PATH> --format <FORMAT> [OPTIONS]
# Examples:
# Windows
reclaim recover --drive C --format jpeg --output D:\Recovered
# Linux
sudo reclaim recover --drive /dev/sda --format jpeg --output ./recovered
# macOS
sudo reclaim recover --drive /dev/disk0 --format jpeg --output ./recovered
# With checkpoint
reclaim recover --drive C --format jpeg --output D:\Recovered \
--resume ./checkpoints/checkpoint_C_jpeg.json \
--checkpoint-interval 50Options:
--drive, -d(required) - C, D, /dev/sda, /dev/disk0--format, -f(default: jpeg) - jpeg, png, pdf, zip, bmp, gif--output, -o(default: ./recovered) - Destination directory--resume, -r(optional) - Checkpoint path--checkpoint-interval(default: 100) - Interval in MB
reclaim list-formats
# Output:
# π SUPPORTED FORMATS:
# ======================================================================
# 1. JPEG (.jpg)
# 2. PNG (.png)
# 3. PDF (.pdf)
# ...reclaim list-devices
# Output:
# π AVAILABLE DEVICES:
# ======================================================================
# 1. C:
# Path: \\.\C:
# Size: 931.51 GB
# Removable: No
# ...reclaim analyze --file ./recovered_00001.jpg
# Output:
# β
Format detected: jpeg (.jpg)
# π VALIDATION REPORT:
# ======================================================================
# Status: β
VALID
# Size: 512000 bytes (500.00 KB)
# SHA-256: abc123def456...
# Dimensions: 1920x1080
# ...reclaim check-device --drive C
# Output:
# β
Device accessible: \\.\C:
# Total size: 931.51 GB
# Removable: No
# ...reclaim validate --drive C --format jpeg --output D:\Recovered
# Output:
# ============================================================
# π VALIDATION REPORT
# ============================================================
# β
Status: VALID
# β
Checks:
# β’ Drive validated against traversal
# β’ Format 'jpeg' supported
# β’ Output path validated
# ============================================================# Windows
reclaim recover -d C -f jpeg -o D:\Fotos
# Linux
sudo reclaim recover -d /dev/sda -f jpeg -o ~/fotos
# macOS
sudo reclaim recover -d /dev/disk0 -f jpeg -o ~/fotos# JPEGs
reclaim recover -d C -f jpeg -o D:\Recovered\JPEG
# Then PNGs
reclaim recover -d C -f png -o D:\Recovered\PNG
# Then PDFs
reclaim recover -d C -f pdf -o D:\Recovered\PDF# First attempt
reclaim recover -d C -f jpeg -o D:\Recovered
# [Ctrl+C to stop]
# Resume
reclaim recover -d C -f jpeg -o D:\Recovered \
--resume ./checkpoints/checkpoint_C_jpeg.json# Windows
$env:RUST_LOG="reclaim=debug"
reclaim recover -d C -f jpeg -o D:\Recovered
# Linux/macOS
RUST_LOG=reclaim=debug reclaim recover -d /dev/sda -f jpeg -o ~/recovered# Linux/macOS
RECLAIM_RATE_LIMIT=52428800 nice -n 19 \
reclaim recover -d /dev/sdb -f jpeg -o ./background_recovery
# 50 MB/s rate limit + nice priority 19
# Windows PowerShell
$env:RECLAIM_RATE_LIMIT = "52428800"
reclaim recover -d E -f jpeg -o ./background_recoveryββββββββββββββββββββββββββββββββββββββββββββ
β CLI Layer (cli.rs) β
β Argument parsing (Clap) β
ββββββββββββββββββββ¬ββββββββββββββββββββββββ
β
ββββββββββββββββββββΌββββββββββββββββββββββββ
β Validation Layer β
β (validation.rs, health.rs, security.rs) β
ββββββββββββββββββββ¬ββββββββββββββββββββββββ
β
ββββββββββββββββββββΌββββββββββββββββββββββββ
β Business Logic Layer β
β (recovery/*, carver.rs, validator.rs) β
ββββββββββββββββββββ¬ββββββββββββββββββββββββ
β
ββββββββββββββββββββΌββββββββββββββββββββββββ
β Infrastructure Layer β
β (config.rs, models.rs, formats.rs, etc.) β
ββββββββββββββββββββ¬ββββββββββββββββββββββββ
β
ββββββββββββββββββββΌββββββββββββββββββββββββ
β OS Abstraction Layer β
β (device/platform/{windows,linux,macos}) β
ββββββββββββββββββββββββββββββββββββββββββββ
For detailed architecture: See ARCHITECTURE.md
# All tests
cargo test
# Specific module tests
cargo test recovery::
# With full output
cargo test -- --nocapture --test-threads=1
# Ignored tests
cargo test -- --ignored
# Integration tests only
cargo test --test integration_tests# Run benchmarks
cargo bench --bench scanner_bench
# Save baseline
cargo bench -- --save-baseline v1.1.0
# Compare against baseline
cargo bench -- --baseline v1.1.0
# Generate HTML reports
cargo bench -- --plotting-backend gnuplotFor complete analysis: See BENCHMARK.md
| Document | Description | Audience |
|---|---|---|
| README.md | This file - Overview | Everyone |
| ARCHITECTURE.md | Technical design | Developers |
| DESIGN_DECISIONS.md | Why each decision | Architects |
| PERFORMANCE.md | Tuning & optimization | DevOps/Ops |
| SECURITY.md | Safety measures | SecOps |
| DEPLOYMENT.md | Build & release | DevOps |
| TROUBLESHOOTING.md | Problem solving | Support |
| CONTRIBUTING.md | How to contribute | Contributors |
| BENCHMARK.md | Performance analysis | Optimizers |
Contributions welcome!
- Fork the repository
- Create branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'feat: add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
- β New file formats
- β Performance optimizations (SIMD, Boyer-Moore)
- β UX/messaging improvements
- β Documentation
- β Additional tests
- β New platform support
Read: CONTRIBUTING.md
Windows: Run as Administrator
Linux/macOS: Use sudo
Check: reclaim list-devices
Windows: Use letter (C, D, E)
Linux: Use /dev/sdX
macOS: Use /dev/diskX
Try different format
Data may be overwritten
Use: RUST_LOG=debug reclaim recover...
For more: See TROUBLESHOOTING.md
| Channel | Type | Response Time |
|---|---|---|
| GitHub Issues | Bugs/Features | 24-48h |
| GitHub Discussions | Questions | 24-48h |
| Urgent/Security | 12-24h |
π§ [email protected]
- MIT License - Simple and permissive
MIT License
Copyright (c) 2024 Paulo G.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...
- β¨ Rust community
- π¦ Crates: clap, indicatif, image, jpeg-decoder, serde, tracing
- π€ All contributors and testers
- β€οΈ Users who report bugs and suggestions
| Aspect | Status | Details |
|---|---|---|
| Development | β Active | Issues and PRs accepted |
| Production | β Ready | v1.1.0 stable |
| Testing | β Complete | 60+ unit, 15+ integration |
| Performance | β Optimized | 940 MiB/s footer search |
| Security | β Audited | Defense in depth + U64 |
| Documentation | β Complete | 5,700+ lines |
- β File carving recovery
- β 6 supported formats
- β Checkpoints + resumption
- β Multi-threading (feature flag)
- β Complete telemetry
- β Health checks (5 validations)
- β Security (defense in depth)
- β U64 overflow protection
- β Rate limiting sliding window
- β CheckpointManager lifecycle
- π SIMD for footer search (+50%)
- π Boyer-Moore algorithm (+30%)
- π Memory mapping (> 1GB files)
- π Plugin system
- π GPU acceleration
- π Cloud storage integration
- π Web UI
- π Distributed recovery
- π ML-based reconstruction
Built with β€οΈ in Rust
ποΈ Architecture β’
π§ Troubleshooting β’
π€ Contributing β’
βοΈ Performance
RECLAIM v1.1.0 | β Production Ready | π 2025-11-02