Aus LinuxUser 05/2013

Gelöschte Dateien mit Scalpel wiederherstellen

© Chris Gander, sxc.hu

Unterm Messer

Mit dem File-Carver Scalpel stellen Sie bereits verloren geglaubte Daten in vielen Fällen komplett oder zumindest teilweise wieder her.

Nur noch die lästigen Backup-Files aus der Arbeit am Projekt löschen, und dann ab in den Feierabend. Doch aus einem rm *~ wird schnell ein rm * ~, das alle Dateien aus dem aktuellen Verzeichnis putzt. Jetzt heißt es Nerven bewahren, denn gelöschte Daten entfleuchen in aller Regel nicht direkt ins digitale Nirvana. Meist löscht das Betriebssystem nur die Metadaten wie Dateiname, Besitzer und Speicherort. Die Nutzdaten befinden sich weiter auf dem Speichermedium, bis sie überschrieben werden.

Unter Linux existieren etliche als File-Carver bezeichnete Programme, um solche Daten wiederherzustellen. Derartige Tools analysieren einen Datenträger auf Bytemuster, die Datei-Headern und -Footern entsprechen, und interpretieren alles Dazwischenliegende als zur Datei gehörig. Das funktioniert, solange Header und Footer eindeutig sind, die Datei nicht fragmentiert ist oder verschlüsselt wurde.

Fehlt ein Footer oder wird er nicht erkannt, schreibt der Carver so lange alles in die Wiederherstellungsdatei, bis er auf den nächsten Header stößt. Daher erweisen sich nicht nur fragmentierte Files oder solche mit schlecht erkennbaren Enden als problematisch, sondern auch solche, die wiederum Dateien enthalten – etwa Textdokumente mit eingebetteten Grafiken. Wer also zu einem derartigen Werkzeug greift, darf keine Wunder erwarten, sondern nur das Beste hoffen.

Datei-Skalpell

Der File-Carver Scalpel [1] kann viele verschiedene Dateitypen aufspüren. Dabei spielt es keine Rolle, mit welchem Dateisystem ein Datenträger formatiert wurde: Scalpel greift auf eine Datenbank mit Headern und Footern von Dateitypen zurück, um Dateien aufzuspüren.

Viele Distributionen habe ältere Scalpel-Versionen in ihren Repositories, die ihre Arbeit gut verrichten, aber nicht über den vollen Funktionsumfang der aktuellen Version 2.0 verfügen, etwa reguläre Ausdrücke für Header und Footer, Multithreading, asynchrone Ein- und Ausgabe oder GPU-beschleunigtes File-Carving (sofern Nvidias CUDA-SDK installiert ist). Wollen Sie diese Features nutzen, müssen Sie Scalpel aus den Quellen selbst übersetzen (siehe Kasten „Installation“).

Installation

Zur Installation von Scalpel 2.0 laden Sie das Quelltext-Archiv [2] herunter und entpacken es in ein beliebiges Verzeichnis. Dann wechseln Sie dorthin und übersetzen das Tool mit ./configure gefolgt von make und make install (Letzteres als root). Sollen die Binärdateien nicht in /usr/local landen, müssen Sie Configure ein entsprechendes --prefix übergeben. Bevor Sie die Quelldateien löschen, sollten Sie scalpel.conf an einen anderen Ort kopieren: Diese Konfigurationsdatei enthält die Header und Footer der unterstützten Dateitypen.

Früher prüften File-Carver einen Datenträger auf Header- und Footer-Pattern und schrieben alle Ergebnisse auf einen neuen Datenträger, was reichlich Speicherplatz erforderte. Scalpel dagegen geht nur zwei Mal über einen Datenträger, um alle nötigen Informationen zusammenzustellen.

Beim ersten Lauf sucht es Header und vermerkt die Fundstellen in einer Datenbank, anschließend identifiziert es die Footer. Dabei berücksichtigt Scalpel, dass ein solcher immer auf einen Header folgt, was die Suche ordentlich beschleunigt. Nun existiert ein Index mit den Positionen der Header und Footer, der die Grundlage für den zweiten Durchgang bildet. Bei diesem bringt Scalpel Header und Footer zusammen und schreibt die gefundenen Dateien ohne nochmaligen Plattenzugriff direkt aus dem Arbeitsspeicher heraus an einen neuen Speicherort.

Bevor Scalpel sich auf die Suche nach verloren gegangenen Daten begibt, liest es die Konfigurationsdatei scalpel.conf ein, die neben den zu suchenden Dateitypen samt Header und Footer auch die minimale und maximale Größe der Dateitypen enthalten darf. Letzteres verhindert, dass eine Ergebnisdatei auf völlig unrealistische Größen anschwillt, wenn der Footer fehlt. Hier sollten Sie vor dem Carving individuelle Einstellungen vornehmen, welche die Suche von Anfang an auf ein Minimum an Dateitypen und -größen begrenzen.

Rette das Sandmännchen

Nun auf zu beispielhaften Rettungsaktionen. Szenario 1, ein Haushalt ohne Fernseher mit mindestens einem Kleinkind: Der Vater hat die über mehrere Tage aus der ARD-Mediathek kopierten Sandmännchen-Sendungen versehentlich gelöscht. Der sandmännchengewohnte Nachwuchs drückt seinen Ärger lautstark aus.

In der scalpel.conf findet sich zwar kein Eintrag für das Format MP4 – aber noch vorhandene, längst geschaute Sandmann-Dateien zeigen eine erfreuliche Konsistenz, was die Header angeht (Abbildung 1). Mit deren Daten füttert der Vater jetzt die scalpel.conf. An erster Stelle des neuen Eintrags (Abbildung 2) steht die Datei-Endung, die potenzielle Treffer erhalten sollen. Das „y“ gibt an, ob Scalpel beim Header und Footer zwischen Groß- und Kleinschreibung unterscheidet. Es folgen Mindest- und Maximalgröße der Dateien – Sandmann-MP4s belegen in der Regel zwischen 30 und 70 MByte. Zu guter Letzt folgt der Header. Ein Footer lässt sich nicht angeben, weil er stets unterschiedlich ausfällt.

Abbildung 1: Kennt Scalpel Header und Footer eines Dateityps nicht, dann legen Sie in der <code>scalpel.conf</code> einfach selbst Hand an.
Abbildung 1: Kennt Scalpel Header und Footer eines Dateityps nicht, dann legen Sie in der scalpel.conf einfach selbst Hand an.
Abbildung 2: Sie dürfen die <code>scalpel.conf</code> mit beliebigen eigenen Headern und Footern ergänzen. Als zusätzliches Kriterium dienen bei Bedarf minimale und maximale Dateigrößen.
Abbildung 2: Sie dürfen die scalpel.conf mit beliebigen eigenen Headern und Footern ergänzen. Als zusätzliches Kriterium dienen bei Bedarf minimale und maximale Dateigrößen.

Anschließend startet der Vater die Sandmännchen-Rettungsaktion auf der Kommandozeile mit der Anweisung

$ scalpel -c scalpel.conf -o sandmann_recovered /dev/sdd1

Daraufhin kratzt Scalpel tatsächlich auch sechs Dateien von der Platte. Alle sind (aufgrund der fehlenden Footer-Angabe) genau 70?000?000 Bytes lang und enthalten eine verloren geglaubte Sandmännchen-Folge – mit einem mehr oder minder großen Batzen Datenschrott am Ende (Abbildung 3). Der Nachwuchs jubelt.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 05/2013 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: