← retour aux outils back to tools

# 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

2. Later, hash the (possibly compromised) system

    hashdeep -c sha256 -r /mnt/evidence_image > evidence.hashdeep

3. Diff against the baseline to find added/modified/deleted files

    hashdeep -a -k golden.hashdeep -r /mnt/evidence_image

4. 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)