hashdeep

Calcule et audite des hachages MD5/SHA de manière récursive sur des arborescences de répertoires, fait partie de la suite md5deep, utilisé pour les vérifications d'intégrité de fichiers en forensique. Computes and audits MD5/SHA hashes recursively across directory trees, part of the md5deep suite, used for forensic file integrity checks.

↗ https://github.com/jessek/hashdeep

Overview

hashdeep (the multi-algorithm successor to md5deep) recursively hashes every file in a directory tree and can audit a directory against a previously generated hash set — flagging added, removed, moved, or modified files. It’s a standard tool for forensic triage and file-integrity verification: baselining a known-good filesystem, then re-running later to spot changes consistent with tampering or malware.

Common Usage

Recursively hash every file under a directory (SHA256 default set depends on build)

hashdeep -r /path/to/directory > baseline.hashdeep

Specify hash algorithms explicitly

hashdeep -c md5,sha1,sha256 -r /path/to/directory > baseline.hashdeep

Audit a directory against a previously generated baseline

hashdeep -a -k baseline.hashdeep -r /path/to/directory

Show only files that changed/are missing/are new (negative matching)

hashdeep -a -k baseline.hashdeep -r /path/to/directory | grep -v "^ok"

Forensic Workflow

  1. Baseline a known-good system image or golden directory
hashdeep -c sha256 -r /mnt/golden_image > golden.hashdeep
  1. Later, hash the (possibly compromised) system
hashdeep -c sha256 -r /mnt/evidence_image > evidence.hashdeep
  1. Diff against the baseline to find added/modified/deleted files
hashdeep -a -k golden.hashdeep -r /mnt/evidence_image
  1. Or directly compare two hash lists
diff golden.hashdeep evidence.hashdeep

Tips

  • Use -r for recursion — without it hashdeep only hashes files in the top-level directory
  • -b (bare filenames, no path) helps when comparing directory trees mounted at different mount points
  • -e shows an ETA/progress bar, useful when hashing large disk images
  • The output format is portable and directly loadable by later hashdeep -k audits, or into other forensic tooling (X-Ways, EnCase support hashdeep-format lists)
Help / Man page
Usage: hashdeep [OPTION]... [FILES]...

  -c <alg1,alg2,...>  Compute hashes using given algorithms (md5, sha1,
                        sha256, tiger, whirlpool)
  -r                   Recursive mode, all subdirectories
  -a                   Audit mode: compare files to hashes in a hashlist
  -k <file>            Add a file as a known hash list (used with -a or -m)
  -m <file>            Match mode: display files matching hashes in file
  -x <file>            Negative match: display files NOT matching file
  -b                   Print only bare filename (no path) in output
  -e                   Display progress estimate during hashing
  -l                   Print relative paths instead of absolute
  -o <types>            Only process specified file types (f,d,l,...)
  -v                   Verbose mode (-vv, -vvv for more)

Vue d’ensemble

hashdeep (le successeur multi-algorithmes de md5deep) hache récursivement chaque fichier d’une arborescence de répertoires et peut auditer un répertoire par rapport à un jeu de hachages généré précédemment, signalant les fichiers ajoutés, supprimés, déplacés ou modifiés. C’est un outil standard pour le triage forensique et la vérification d’intégrité de fichiers : établir une référence sur un système de fichiers sain connu, puis relancer plus tard pour repérer des changements cohérents avec une altération ou un malware.

Utilisation courante

# Hacher récursivement chaque fichier sous un répertoire (le jeu SHA256 par défaut dépend du build)
hashdeep -r /path/to/directory > baseline.hashdeep

# Spécifier explicitement les algorithmes de hachage
hashdeep -c md5,sha1,sha256 -r /path/to/directory > baseline.hashdeep

# Auditer un répertoire par rapport à une référence générée précédemment
hashdeep -a -k baseline.hashdeep -r /path/to/directory

# N'afficher que les fichiers changés/manquants/nouveaux (correspondance négative)
hashdeep -a -k baseline.hashdeep -r /path/to/directory | grep -v "^ok"

Flux de travail forensique

# 1. Établir une référence sur une image système ou un répertoire de référence sain connu
hashdeep -c sha256 -r /mnt/golden_image > golden.hashdeep

# 2. Plus tard, hacher le système (potentiellement compromis)
hashdeep -c sha256 -r /mnt/evidence_image > evidence.hashdeep

# 3. Comparer avec la référence pour trouver les fichiers ajoutés/modifiés/supprimés
hashdeep -a -k golden.hashdeep -r /mnt/evidence_image

# 4. Ou comparer directement deux listes de hachages
diff golden.hashdeep evidence.hashdeep

Conseils

  • Utilisez -r pour la récursion : sans elle, hashdeep ne hache que les fichiers du répertoire de premier niveau
  • -b (noms de fichiers nus, sans chemin) aide lors de la comparaison d’arborescences montées sur des points de montage différents
  • -e affiche une barre de progression/ETA, utile lors du hachage de grandes images disque
  • Le format de sortie est portable et directement rechargeable par des audits hashdeep -k ultérieurs, ou dans d’autres outils forensiques (EnCase, X-Ways supportent les listes au format hashdeep)
Aide / Page de manuel
Usage: hashdeep [OPTION]... [FILES]...

  -c <alg1,alg2,...>  Compute hashes using given algorithms (md5, sha1,
                        sha256, tiger, whirlpool)
  -r                   Recursive mode, all subdirectories
  -a                   Audit mode: compare files to hashes in a hashlist
  -k <file>            Add a file as a known hash list (used with -a or -m)
  -m <file>            Match mode: display files matching hashes in file
  -x <file>            Negative match: display files NOT matching file
  -b                   Print only bare filename (no path) in output
  -e                   Display progress estimate during hashing
  -l                   Print relative paths instead of absolute
  -o <types>            Only process specified file types (f,d,l,...)
  -v                   Verbose mode (-vv, -vvv for more)