Ein Python-Tool zur Wiederherstellung von Daten aus mit Partial-Encryption-Ransomware verschlüsselten Disk-Images (z. B. VMDK, .img). Das Tool erkennt verschlüsselte Bereiche automatisch per Entropie-Analyse, lokalisiert Partitionen aus dem Backup-GPT oder per Signatur-Scan und extrahiert alle wiederherstellbaren Dateien.
Ransomware, die nach dem Partial-Encryption-Prinzip arbeitet (verschlüsselt nur Kopf und Ende der Disk), hinterlässt den mittleren Datenbereich im Klartext. Dieses Tool macht sich genau das zunutze:
HEAD [verschlüsselt]
MIDDLE [Klartext ← Daten werden hier extrahiert]
TAIL [verschlüsselt]
| Schritt | Beschreibung |
|---|---|
| Step 1 | Entropie-Scan — Grenzen des verschlüsselten Bereichs erkennen |
| Step 2 | Partitions-Scan — Backup-GPT lesen oder NTFS/FAT32-Signaturen suchen |
| Step 3 | Datei-Extraktion — tsk_recover pro Partition in eigene Ausgabeordner |
Zusätzlich gibt es zwei optionale Modi:
--identify— Dateitypen wiederhergestellter Dateien erkennen (anhand Magic Bytes)--carve— Dateien direkt aus dem Raw-Image herausschneiden (ohne Dateisystem)
sudo apt install sleuthkit # tsk_recover (Pflicht für Steps 1–3)
sudo apt install foremost # optional, verbessert --carve deutlichPython 3.7 oder neuer, keine externen Pakete erforderlich (nur Standardbibliothek).
git clone <repo-url>
cd recovery
# optional: virtuelle Umgebung
python3 -m venv .venv && source .venv/bin/activatepython3 recovery.py <disk.img>
python3 recovery.py <disk.img> -o ./mein_outputErgebnis: Für jede gefundene Partition wird ein Unterordner im Ausgabeverzeichnis erstellt und alle wiederherstellbaren Dateien werden darin gespeichert.
python3 recovery.py <disk.img> --scan-onlyGibt Entropie-Grenzen und gefundene Partitionen aus — ohne Dateien zu schreiben. Nützlich zur schnellen Lageeinschätzung.
python3 recovery.py --identify ./recovery_output
python3 recovery.py --identify ./recovery_output --rename- Ohne
--rename: Zeigt nur an, welche Dateien eine falsche oder fehlende Erweiterung haben. - Mit
--rename: Benennt die Dateien automatisch auf die korrekte Erweiterung um.
python3 recovery.py --carve <disk.img>
python3 recovery.py --carve <disk.img> -o ./carved_outputKein Dateisystem notwendig. Nutzt foremost wenn installiert, sonst den eingebauten Python-Carver.
| Parameter | Beschreibung |
|---|---|
disk |
Pfad zum verschlüsselten Disk-Image (VMDK, IMG, …) |
-o, --output |
Ausgabeverzeichnis (Standard: <diskname>_recovery/) |
--scan-only |
Nur Analyse (Entropie + Partitionen), keine Extraktion |
--identify <DIR> |
Dateitypen in einem Verzeichnis erkennen |
--rename |
In Kombination mit --identify: Dateien umbenennen |
--carve <DISK> |
Dateien direkt aus Raw-Image carven |
| Format | Erkennung |
|---|---|
Magic Bytes %PDF |
|
| DOCX / XLSX / PPTX | ZIP + interne Pfade (word/, xl/, ppt/) |
| DOC / XLS / PPT | OLE2-Header + Stream-Namen |
| JPEG, PNG, GIF, BMP | Standard Magic Bytes |
| ZIP, 7z, RAR, GZIP | Magic Bytes |
| EXE / ELF | MZ / \x7fELF |
| SQLite | SQLite format 3 |
| XML / HTML | Textanteil + Tag-Erkennung |
| Plaintext | Hoher Anteil druckbarer Zeichen |
PDF, ZIP (inkl. Office Open XML), OLE2, JPEG, PNG, GIF, SQLite
================================================================
VMDK RANSOMWARE RECOVERY
================================================================
Disk : disk.vmdk
Size : 128.00 GB (137,438,953,472 bytes)
Output : ./disk_recovery
── Entropy Scan ────────────────────────────────────────────
HEAD 0x00000000 – 0x007fffff ( 8,388,608 B) ENCRYPTED
MIDDLE 0x00800000 – 0xf77fffff ( 125,829,120 B) PLAINTEXT
TAIL 0xf7800000 – 0xffffffff ( 8,388,608 B) ENCRYPTED
Pattern: partial-encryption ransomware CONFIRMED
── Partition Detection ─────────────────────────────────────
Source : backup GPT (2 partition(s) found)
LBA 2048 – 1050623 ( 512.0 MB) EFI System
LBA 1050624 – 268433407 ( 127.5 GB) Basic Data
── File Extraction ─────────────────────────────────────────
...
── Summary ─────────────────────────────────────────────────
./disk_recovery/Basic_Data — 24,831 files (98.3 GB)
Next steps:
Identify unknown filetypes : python3 recovery.py --identify ./disk_recovery
Carve additional files : python3 recovery.py --carve disk.vmdk -o ./disk_recovery/carved
# 1. Lageeinschätzung
python3 recovery.py disk.vmdk --scan-only
# 2. Vollständige Extraktion
python3 recovery.py disk.vmdk -o ./output
# 3. Dateitypen prüfen und Erweiterungen reparieren
python3 recovery.py --identify ./output --rename
# 4. Zusätzlich carven (falls Dateisystem beschädigt)
python3 recovery.py --carve disk.vmdk -o ./output/carved- Das Tool funktioniert ausschließlich bei Partial-Encryption-Ransomware (verschlüsselt nur Anfang und Ende). Bei vollständiger Verschlüsselung gibt es keinen wiederherstellbaren Klartextbereich.
tsk_recoversetzt ein lesbares NTFS- oder FAT32-Dateisystem voraus. Ist das Dateisystem selbst beschädigt, hilft--carveals Fallback.- Der Carver arbeitet sektorgranular (512 Byte). Fragmentierte Dateien können unvollständig sein.
- Das Tool verändert das Quell-Image nie — alle Operationen sind lesend.
Dieses Tool ist für den privaten und forensischen Einsatz gedacht. Eine Weitergabe oder Nutzung in kommerziellen Produkten bedarf der Genehmigung des Autors.