Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
hashdeep — Ensemble d'outils de hachage multiplateforme pour le calcul de condensés de messages (MD5, SHA-1, SHA-256, Tiger, Whirlpool) avec parcours récursif de répertoires et capacités d'audit d'intégrité des fichiers. | Kitploit
Outils/GitHubGitHub/jessek/hashdeep
Analyse de HachageAnalyse ForensiqueRécupération de DonnéesCriminalistique Numérique
GitHubjessek/hashdeep

hashdeep

Ensemble d'outils de hachage multiplateforme pour le calcul de condensés de messages (MD5, SHA-1, SHA-256, Tiger, Whirlpool) avec parcours récursif de répertoires et capacités d'audit d'intégrité des fichiers.

Voir le dépôt
786135il y a 8 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Ceci est md5deep, un ensemble d'outils multiplateformes pour calculer des empreintes (hashs) ou résumés de messages, pour un nombre quelconque de fichiers, tout en explorant éventuellement récursivement la structure des répertoires. Il peut également prendre une liste d'empreintes connues et afficher les noms de fichiers d'entrée dont les empreintes correspondent ou non à l'une des empreintes connues. Cette version prend en charge les empreintes MD5, SHA-1, SHA-256, Tiger et Whirlpool.

Voir le fichier NEWS pour une liste des changements entre les versions.

Voir le fichier COPYING pour des informations sur les licences de ce programme.

Voir le fichier INSTALL pour des instructions (génériques) de compilation et d'installation. Voici la version courte qui devrait fonctionner dans la plupart des cas :

root@kitploit:~
sh bootstrap.sh # runs autoconf, automake
./configure
make
make install

Notez que vous devez normalement être root pour installer dans l'emplacement par défaut. La commande sudo est utile pour cela. Vous pouvez spécifier un emplacement d'installation alternatif en utilisant l'option --prefix du script configure. Par exemple, pour installer dans /home/foo/bin, utilisez :

$ ./configure --prefix=/home/foo

Une documentation complète sur l'utilisation du programme est disponible sur la page d'accueil du projet, https://github.com/jessek/hashdeep

Empreintes des versions

La dernière version est la 4.4. Voici les empreintes pour les versions Win32 :

  • MD5 047ff5311d821f667150f37695bd01b3
  • SHA256 d5e85933e74e5ba6a73f67346bc2e765075d26949c831a428166c92772f67dbc

md5deep vs hashdeep

Pour des raisons historiques, le programme a des options et fonctionnalités différentes selon qu'il est exécuté sous les noms "hashdeep" et "md5deep".

hashdeep possède une fonctionnalité appelée "audit" qui peut utiliser une liste d'empreintes connues pour auditer un ensemble de FICHIERS. Les erreurs sont envoyées sur la sortie d'erreur standard. Si aucun FICHIER n'est spécifié, il lit depuis l'entrée standard.

root@kitploit:~
-a Mode audit. Chaque fichier d'entrée est comparé à l'ensemble des connus. Un
   audit est considéré comme réussi si chaque fichier d'entrée correspond exactement
   à un fichier dans l'ensemble des connus. Toute collision, nouveau fichier ou fichier manquant
   fera échouer l'audit. L'utilisation de ce seul drapeau produit un message,
   soit "Audit passed" soit "Audit Failed".
   -v = affiche le nombre de fichiers dans chaque catégorie
   -v -v = affiche toutes les divergences
   -v -v -v = affiche les résultats pour chaque fichier examiné et chaque fichier connu.

-k <fichier> - L'option -k doit être utilisée pour charger le fichier d'audit

Pour effectuer un audit :

root@kitploit:~
hashdeep -r dir  > /tmp/auditfile            # Generate the audit file
hashdeep -a -k /tmp/auditfile -r dir          # test the audit

Notez que l'audit est effectué avec un fichier de sortie hashdeep standard. (En interne, l'audit est calculé dans le cadre du processus de hachage.)

Problèmes Unicode

Les systèmes informatiques modernes basés sur POSIX considèrent les noms de fichiers comme une séquence d'octets qui sont rendus selon la volonté de l'application. Cela signifie que les noms de fichiers contiennent généralement de l'ASCII mais peuvent contenir de l'UTF-8, de l'UTF-16, du latin1, ou même des codages Unicode invalides.

Les systèmes Windows ont un ensemble d'appels API pour les noms de fichiers basés sur l'ASCII et un autre ensemble pour les noms de fichiers encodés en UCS-2, qui « produit un format de longueur fixe en utilisant simplement le point de code comme unité de code 16 bits et produit exactement le même résultat que l'UTF-16 pour 63 488 points de code dans la plage 0-0xFFFF » selon Wikipédia. Mais Wikipédia conteste l'exactitude factuelle de cette déclaration sur la page de discussion. Il est assez clair que personne n'est totalement sûr que Windows le fasse réellement, et Windows lui-même peut ne pas être cohérent.

La version 3 de ce programme a résolu ce problème en utilisant la variable TCHAR pour contenir les noms de fichiers sous Windows et en refusant de les imprimer, imprimant plutôt un "?". La version 4 de ce programme traduit les chaînes TCHAR en chaînes std::string dès que possible en utilisant la fonction Windows WideCharToMultiByte. Des drapeaux ont été ajoutés pour échapper l'Unicode lors de l'impression.

Il n'y a aucun moyen (apparemment) sous Windows d'ouvrir un nom de fichier UTF-8 ; il doit être reconverti en un nom de fichier multi-octets avec MultiByteToWideChar.

Heureusement, nous n'avons jamais vraiment besoin de reconvertir.

Notez que sous Windows, les fichiers hachés peuvent contenir des caractères Unicode, mais le fichier contenant les empreintes doit avoir un nom ASCII.

COMPILATION POUR WINDOWS :

-D_UNICODE définit TCHAR comme 'wchar_t'.

COMPILATION POUR POSIX :

-D_UNICODE n'est pas défini, ce qui fait que TCHAR est défini comme 'char'.

Auparavant, les fonctions win32 étaient contrôlées avec des déclarations #ifdef, comme ceci :

root@kitploit:~
#ifdef _WIN32
  _wfullpath(d_name,fn,PATH_MAX);
#else
  if (NULL == realpath(fn,d_name))
    return TRUE;
#endif

Il y avait aussi un fichier appelé tchar-local.h qui changeait en fait la sémantique des fonctions sur différentes plateformes, avec des choses comme ceci :

root@kitploit:~
   #define  _tcsncpy   strncpy
   #define  _tstat_t   struct stat

Cela rendait le code très difficile à maintenir.

Avec la réécriture 4.0, nous avons changé ce code avec des fonctions C++ qui retournent des objets lorsque c'était possible et évitent l'utilisation de #defines de sorte que sur les systèmes _WIN32, la fonction realpath() soit définie avant son utilisation, et que le code principal n'ait pas la fonction realpath(). Vous pouvez voir cela dans cycles.cpp :

root@kitploit:~
/* Return the canonicalized absolute pathname in UTF-8 on Windows and POSIX systems */
std::string get_realpath(const TCHAR *fn)
{
#ifdef _WIN32
    /*
     * expand a relative path to the full path.
     * http://msdn.microsoft.com/en-us/library/506720ff(v=vs.80).aspx
     */
    TCHAR absPath[PATH_MAX];
    if(_fullpath(absPath,fn,PAT_HMAX)==0) return "";
    return tchar_to_utf8(absPath);
#else
    char resolved_name[PATH_MAX];	//
    if(realpath(fn,resolved_name)==0) return "";
    return string(resolved_name);
#endif
}

Vous pouvez installer mingw puis simplement configurer avec quelque chose comme ceci :

$ export PATH=$PATH:/usr/local/i386-mingw32-4.3.0/bin $ ./configure --host=i386-mingw32

Références des algorithmes de hachage

L'algorithme MD5 est défini dans la RFC 1321 : http://www.ietf.org/rfc/rfc1321.txt

L'algorithme SHA1 est défini dans FIPS 180-1 : http://www.itl.nist.gov/fipspubs/fip180-1.htm

L'algorithme SHA256 est défini dans FIPS 180-2 : http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf

L'algorithme Tiger est défini sur : http://www.cs.technion.ac.il/~biham/Reports/Tiger/

L'algorithme Whirlpool est défini sur : http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html

Théorie du fonctionnement

  • main.cpp
    • configure le système
  • dig.cpp
    • parcourt les répertoires individuels
    • appelle hash_file() dans hash.cpp pour chaque fichier à hacher
  • hash.cpp
    • effectue le hachage de chaque fichier
  • display.cpp
    • stocke/affiche les résultats
Télécharger l’outil