1. Principe de base du file carving

Le “carving” (de to carve, sculpter) consiste à :

  1. Lire le disque bloc par bloc (souvent en 512 octets ou 4 Ko).
  2. Chercher des séquences de bytes connues (les headers).
  3. Essayer de déterminer où s’arrête le fichier, selon la structure connue du format (footer, taille, etc.),

2. Comment déterminer le début d’un fichier

En se basant simplement sur la recherche des headers : https://en.wikipedia.org/wiki/List_of_file_signatures

Un en-tête de fichier est une signature (aussi appelée magic header), qui est une valeur hexadécimale constante déterminant le format du fichier.

3. Comment déterminer la fin d’un fichier

Cas n°1 : Format avec un footer

Certains formats ont une signature de fin claire :

Format Header (début) Footer (fin)
JPEG FFD8 FFD9
ZIP 504B0304 504B0506 (End of Central Directory)
PDF %PDF %%EOF
PNG 89504E47 49454E44AE426082

Dans ces cas, le logiciel de carving lit à partir du header jusqu’à la détection du footer correspondant.

Cas n°2 : Format avec structure interne (tailles, offsets)

D’autres formats contiennent dans leur en-tête une taille totale ou des offsets vers les sections internes, par exemple :