Carving (englisch für „Schnitzerei“) ist eine Methode, um Dateien auf Speichermedien ohne die Hilfe des Dateisystems zu identifizieren und wiederherzustellen. Dazu wird der rohe Datenstrom des Speichermediums nach charakteristischen Zeichenfolgen wie einer magischen Zahl oder anderen typischen Kopfdatenstrukturen bekannter Dateiformate durchsucht.
Es findet Anwendung in der IT-Forensik und zur Datenwiederherstellung. In der Regel wird Carving auf Speichermedien mit beschädigtem Dateisystem eingesetzt oder für Speicherbereiche, die im bestehenden Dateisystem als frei geführt sind.
Um sich nicht darauf verlassen zu müssen, einen Bereich ein zweites Mal erfolgreich auslesen zu können, wird bei der Datenrettung von beschädigten Medien in der Regel mit einem vorher erstellten Speicherabbild gearbeitet. Klassischerweise wird im rohen Datenstrom nach Sequenzen gesucht, die eine Datei darstellen, und diese wieder in eine separate Datei geschrieben. Bei in jüngerer Zeit in Gebrauch kommenden Verfahren wird mit einem Analyselauf ein (neues) Dateisystem erstellt, das Dateien verzeichnet und (wieder) direkt an Ort und Stelle („in place“) zugreifbar macht.[1] Der dazu nötige Analyselauf kann auch mit der Erstellung eines Speicherabbildes kombiniert werden.[2] Im einfachsten Fall ist zu einer Datei ihre Anfangs- und Endsequenzen bekannt und alle Daten in einer fortlaufenden Sequenz, unfragmentiert abgelegt. Bei unbekannter Endsequenz kann eventuell die genaue Dateigröße bestimmt werden oder versucht werden, das Ende anhand eines sprunghaften Wechsels in der Entropie des Datenstromes zu orten.[3] Größtes Problem ist die eventuelle Fragmentierung der Dateien.
Da das Carving für gefundene Dateien keine Namen ermitteln kann, werden entweder nichtssagende generische Namen vergeben oder darüber hinaus nach Resten eines ursprünglichen Dateisystems gesucht, um daraus den ursprünglichen Namen zu restaurieren oder auch anhand von Dateiinhalten wie eingebetteten Metadaten sinnvolle Namen zu erstellen versucht.