Das muss mit Komprimierung nicht viel zu tun
haben. Beispiel:
- Bild 1 lag an Adresse 1.000.000 bis Adresse 8.000.000, war also ca. 7 MB groß.
- Bild 1 wurde gelöscht.
- Bild 2 wurde später an Adresse 2.000.000 abgelegt und ging bis 9.000.000, war also auch 7 MB groß und hat große Teile des Rests von Bild1 überschrieben.
Wenn nun die Datenrettung per File carving (also ohne Zugriff auf Dateisysteminformationen) erfolgt, findet das Tool an Adresse 1.000.000 einen Bild-Header mit der Info "hier beginnt ein Bild mit 7 MB". Diese 7 MB ab hier speichert er dann "gefundenes" Bild ab.
Etwas weiter hinten bei Adresse 2.000.000 findet er einen weiteren Bild-Header, der auch sagt "hier beginnt ein Bild mit 7 MB". Da der Carver oft nicht wissen kann welcher Header neuer ist, speichert er also einfach beide Bilder ab. Und schwupps, wurden aus 8 MB Daten 14 MB rekonstruierte Dateien.
Wenn man die öffnet, wird natürlich mindestens eines der beiden Bilder nicht richtig darstellbar sein ... Real sind die Platten und Dateien ein Vielfaches großer. Denkt nur mal an das gefundene Relikt des Headers eines Archivs, das mal 100 GB groß war... Je nach Dateiformat enthält der Header auch gar keine Größenangabe, da muss der File Carver dann eine Maximalgröße schätzen und wird ggf. mehr Daten in die Datei speichern als eigentlich dazu gehören...
Und wenn das Dateisystem zudem fragmentiert war, wird man selbst Dateien, die nie mit etwas anderem überschrieben wurden, mit File carving oft nicht mehr richtig wiederherstellen können, da man da i.d.R. nur eine Chance hat anzunehmen, dass sie mit Glück zusammenhängend, also am Stück, abgespeichert wurden... Blind zu versuchen Sektoren von unterschiedlichen Positionen semantisch korrekt aneinanderzupuzzeln geht nur unter idealen Voraussetzungen und mit viel Detailwissen über den internen Aufbau des Dateiformats, teils ist es selbst dann aussichtslos...