foremost

Outil de file carving qui récupère des fichiers supprimés depuis des images disque en recherchant les en-têtes et pieds de fichiers. Supporte plus de 30 types de fichiers dont JPEG, PDF, ZIP et EXE. File carving tool that recovers deleted files from disk images by searching for file headers and footers. Supports 30+ file types including JPEG, PDF, ZIP, and EXE.

↗ http://foremost.sourceforge.net

Overview

foremost recovers files from disk images, memory dumps, or raw data by searching for known file signatures (headers and footers). Unlike filesystem-based recovery, carving works even when filesystem metadata is destroyed. Useful for recovering deleted files and CTF forensics challenges.

Basic Usage

Carve all supported file types from a disk image

foremost -i disk.dd -o /output/dir/

Carve from specific file

foremost -i suspicious.bin -o /recovered/

Carve from stdin (pipe)

dd if=/dev/sda | foremost -o /output/

Verbose output

foremost -v -i disk.dd -o /output/

Very verbose

foremost -V -i disk.dd -o /output/

Specifying File Types

Carve only JPEG and PNG

foremost -t jpg,png -i disk.dd -o /output/

Carve only documents

foremost -t pdf,doc,docx -i disk.dd -o /output/

Carve only archives

foremost -t zip,rar -i disk.dd -o /output/

Carve all supported types (default)

foremost -i disk.dd -o /output/
# Supported types:
# jpg, gif, png, bmp, avi, exe, mpg, wav, riff, wmv,
# mov, pdf, ole, doc, zip, rar, htm, cpp, etc.

Output Structure

After running foremost, output directory contains:

ls /output/

→ audit.txt → Log of all found files with offsets jpg/ → Recovered JPEG files (numbered) pdf/ → Recovered PDF files zip/ → Recovered ZIP files …

Check the audit log

cat /output/audit.txt

→ Shows: filename, offset, size, comments

Count recovered files

ls /output/jpg/ | wc -l

Working with Disk Images

From raw dd image

foremost -i disk.dd -o /recovered/ -t jpg,pdf
# From E01 (convert first)
ewfexport evidence.E01 -t raw -f raw -o disk.dd
foremost -i disk.dd -o /recovered/

# From specific partition (with offset)
mmls disk.dd    # Get partition offset
# Offset: 2048 sectors × 512 bytes = 1048576 bytes
dd if=disk.dd bs=512 skip=2048 | foremost -o /recovered/

Configuration File

# Custom file signatures in /etc/foremost.conf
# Format: name  case_sensitive  size  header  [footer]
jpg     y   200000000   \xff\xd8\xff\xe0    \xff\xd9
zip     y   10000000    PK\x03\x04

Run with custom config

foremost -c /etc/foremost.conf -i disk.dd -o /output/

Tips

  • foremost’s output directory must not already exist — it creates it fresh
  • Carved files may be fragmented or incomplete if the filesystem reassigned the blocks
  • For NTFS images, carving unallocated space with blkls (The Sleuth Kit) is more efficient
  • In CTF forensics: always try foremost on any binary blob — embedded files are a common challenge
Help / Man page
foremost [options]

-t types     File types to search for (comma-separated)
-i file      Input file (default: stdin)
-o dir       Output directory
-c file      Config file (default: /etc/foremost.conf)
-v           Verbose output
-V           Extra verbose
-b size      Block size in bytes (default: 512)
-k           Keep on when bad overlap happens
-T           Time stamp output directory
-w           Only write audit file (don't carve)
-q           Quick mode (headers and footers only)
-Q           Quiet mode
-a           Write all headers

Vue d’ensemble

foremost récupère des fichiers depuis des images disque, des dumps mémoire ou des données brutes en recherchant des signatures de fichiers connues (en-têtes et pieds). Contrairement à la récupération basée sur le système de fichiers, le carving fonctionne même quand les métadonnées du système de fichiers sont détruites. Utile pour récupérer des fichiers supprimés et pour les challenges forensiques en CTF.

Utilisation de base

# Carver tous les types de fichiers supportés depuis une image disque
foremost -i disk.dd -o /output/dir/

# Carver depuis un fichier spécifique
foremost -i suspicious.bin -o /recovered/

# Carver depuis stdin (pipe)
dd if=/dev/sda | foremost -o /output/

# Sortie verbeuse
foremost -v -i disk.dd -o /output/

# Très verbeuse
foremost -V -i disk.dd -o /output/

Spécifier les types de fichiers

# Carver uniquement JPEG et PNG
foremost -t jpg,png -i disk.dd -o /output/

# Carver uniquement les documents
foremost -t pdf,doc,docx -i disk.dd -o /output/

# Carver uniquement les archives
foremost -t zip,rar -i disk.dd -o /output/

# Carver tous les types supportés (par défaut)
foremost -i disk.dd -o /output/

# Types supportés :
# jpg, gif, png, bmp, avi, exe, mpg, wav, riff, wmv,
# mov, pdf, ole, doc, zip, rar, htm, cpp, etc.

Structure de sortie

Après l’exécution de foremost, le répertoire de sortie contient :

ls /output/

→ audit.txt : journal de tous les fichiers trouvés avec leurs offsets ; jpg/ : fichiers JPEG récupérés (numérotés) ; pdf/ : fichiers PDF récupérés ; zip/ : fichiers ZIP récupérés ; etc.

# Consulter le journal d'audit
cat /output/audit.txt

→ Affiche : nom de fichier, offset, taille, commentaires

# Compter les fichiers récupérés
ls /output/jpg/ | wc -l

Travailler avec des images disque

# Depuis une image dd brute
foremost -i disk.dd -o /recovered/ -t jpg,pdf

# Depuis un E01 (convertir d'abord)
ewfexport evidence.E01 -t raw -f raw -o disk.dd
foremost -i disk.dd -o /recovered/

# Depuis une partition spécifique (avec offset)
mmls disk.dd    # Obtenir l'offset de partition
# Offset : 2048 secteurs × 512 octets = 1048576 octets
dd if=disk.dd bs=512 skip=2048 | foremost -o /recovered/

Fichier de configuration

# Signatures de fichiers personnalisées dans /etc/foremost.conf
# Format : name  case_sensitive  size  header  [footer]
jpg     y   200000000   \xff\xd8\xff\xe0    \xff\xd9
zip     y   10000000    PK\x03\x04

Lancer avec une config personnalisée

foremost -c /etc/foremost.conf -i disk.dd -o /output/

Conseils

  • Le répertoire de sortie de foremost ne doit pas déjà exister : il le crée lui-même
  • Les fichiers carvés peuvent être fragmentés ou incomplets si le système de fichiers a réattribué les blocs
  • Pour les images NTFS, carver l’espace non alloué avec blkls (The Sleuth Kit) est plus efficace
  • En forensique CTF : toujours essayer foremost sur n’importe quel blob binaire, les fichiers embarqués sont un défi courant
Aide / Page de manuel
foremost [options]

-t types     File types to search for (comma-separated)
-i file      Input file (default: stdin)
-o dir       Output directory
-c file      Config file (default: /etc/foremost.conf)
-v           Verbose output
-V           Extra verbose
-b size      Block size in bytes (default: 512)
-k           Keep on when bad overlap happens
-T           Time stamp output directory
-w           Only write audit file (don't carve)
-q           Quick mode (headers and footers only)
-Q           Quiet mode
-a           Write all headers