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.netOverview
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