← retour aux outils back to tools

# 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