Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
hashdeep — Herramienta de hash multiplataforma para calcular resúmenes de mensajes (MD5, SHA-1, SHA-256, Tiger, Whirlpool) con capacidad de recorrido recursivo de directorios y auditoría de integridad de archivos. | Kitploit
Herramientas/GitHubGitHub/jessek/hashdeep
Análisis de HashAnálisis ForenseRecuperación de DatosForensia Digital
GitHubjessek/hashdeep

hashdeep

Herramienta de hash multiplataforma para calcular resúmenes de mensajes (MD5, SHA-1, SHA-256, Tiger, Whirlpool) con capacidad de recorrido recursivo de directorios y auditoría de integridad de archivos.

Ver Repositorio
786135hace 8 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Esto es md5deep, un conjunto de herramientas multiplataforma para calcular hashes, o resúmenes de mensajes, de cualquier número de archivos, opcionalmente explorando recursivamente la estructura de directorios. También puede tomar una lista de hashes conocidos y mostrar los nombres de archivo de los archivos de entrada cuyos hashes coinciden o no con alguno de los hashes conocidos. Esta versión soporta hashes MD5, SHA-1, SHA-256, Tiger y Whirlpool.

Consulte el archivo NEWS para obtener una lista de cambios entre versiones.

Consulte el archivo COPYING para obtener información sobre la licencia de este programa.

Consulte el archivo INSTALL para obtener instrucciones de compilación e instalación (genéricas). Aquí está la versión corta que debería funcionar en muchos casos:

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

Tenga en cuenta que normalmente debe ser root para instalar en la ubicación predeterminada. El comando sudo es útil para ello. Puede especificar una ubicación de instalación alternativa usando la opción --prefix del script configure. Por ejemplo, para instalar en /home/foo/bin, use:

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

Hay documentación completa sobre cómo usar el programa en la página principal del proyecto, https://github.com/jessek/hashdeep

Hashes de versiones

La última versión es la 4.4. Estos son los hashes para las versiones Win32:

  • MD5 047ff5311d821f667150f37695bd01b3
  • SHA256 d5e85933e74e5ba6a73f67346bc2e765075d26949c831a428166c92772f67dbc

md5deep vs. hashdeep

Por razones históricas, el programa tiene diferentes opciones y características cuando se ejecuta con los nombres "hashdeep" y "md5deep".

hashdeep tiene una función llamada "auditoría" que puede usar una lista de hashes conocidos para auditar un conjunto de ARCHIVOS. Los errores se reportan a la salida estándar de error. Si no se especifican ARCHIVOS, lee de la entrada estándar.

root@kitploit:~
-a Modo de auditoría. Cada archivo de entrada se compara con el conjunto de conocidos. Se dice que una auditoría pasa si cada archivo de entrada coincide exactamente con un archivo en el conjunto de conocidos. Cualquier colisión, archivo nuevo o archivo faltante hará que la auditoría falle. Usar esta bandera sola produce un mensaje, ya sea "Auditoría pasada" o "Auditoría fallida".
   -v = imprime el número de archivos en cada categoría
   -v -v = imprime todas las discrepancias
   -v -v -v = imprime los resultados para cada archivo examinado y cada archivo conocido.

-k <archivo> - La opción -k debe usarse para cargar el archivo de auditoría

Para realizar una auditoría:

root@kitploit:~
hashdeep -r dir  > /tmp/auditfile            # Genera el archivo de auditoría
hashdeep -a -k /tmp/auditfile -r dir          # prueba la auditoría

Observe que la auditoría se realiza con un archivo de salida hashdeep estándar. (Internamente, la auditoría se calcula como parte del proceso de hash.)

Problemas con Unicode

Los sistemas informáticos modernos basados en POSIX consideran los nombres de archivo como una secuencia de bytes que se representan según lo desee la aplicación. Esto significa que los nombres de archivo normalmente contienen ASCII pero pueden contener UTF-8, UTF-16, latin1 o incluso codificaciones Unicode no válidas.

Los sistemas basados en Windows tienen un conjunto de llamadas API para nombres de archivo basados en ASCII y otro conjunto para nombres de archivo codificados como UCS-2, que "produce un formato de longitud fija simplemente usando el punto de código como unidad de código de 16 bits y produce exactamente el mismo resultado que UTF-16 para 63.488 puntos de código en el rango 0-0xFFFF" según wikipedia. Pero wikipedia disputa la precisión fáctica de esta declaración en la página de discusión. Está bastante claro que nadie está completamente seguro de lo que Windows realmente hace, y Windows mismo puede no ser consistente.

La versión 3 de este programa abordó este problema usando la variable TCHAR para contener nombres de archivo en Windows y negándose a imprimirlos, imprimiendo un "?" en su lugar. La versión 4 de este programa traduce cadenas TCHAR a cadenas std::string en la primera oportunidad usando la función de Windows WideCharToMultiByte. Se han agregado banderas para escapar Unicode cuando se imprime.

No hay forma (aparentemente) en Windows de abrir un nombre de archivo UTF-8; debe convertirse de nuevo a un nombre de archivo multibyte con MultiByteToWideChar.

Afortunadamente, nunca necesitamos realmente convertir de vuelta.

Observe que en Windows, los archivos cuyo hash se calcula pueden tener caracteres Unicode, pero el archivo con los hashes debe tener un nombre ASCII.

COMPILANDO PARA WINDOWS:

-D_UNICODE hace que TCHAR se defina como 'wchar_t'.

COMPILANDO PARA POSIX:

-D_UNICODE no está definido, lo que hace que TCHAR se defina como 'char'.

Anteriormente, las funciones de win32 se controlaban con sentencias #ifdef, como esta:

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

También había un archivo llamado tchar-local.h que en realidad cambiaba la semántica de las funciones en diferentes plataformas, con cosas como esta:

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

Esto hacía que el código fuera muy difícil de mantener.

Con la reescritura 4.0, hemos cambiado este código con funciones C++ que devuelven objetos cuando era posible y evitamos el uso de #defines, de modo que en sistemas _WIN32 la función realpath() se define antes de su uso, y el código principal carece de la función realpath(). Puede ver esto en cycles.cpp:

root@kitploit:~
/* Devuelve la ruta absoluta canónica en UTF-8 en sistemas Windows y POSIX */
std::string get_realpath(const TCHAR *fn)
{
#ifdef _WIN32
    /*
     * expande una ruta relativa a la ruta completa.
     * 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
}

Puede instalar mingw y luego simplemente configurar con algo como esto:

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

Referencias de Algoritmos Hash

El algoritmo MD5 está definido en RFC 1321: http://www.ietf.org/rfc/rfc1321.txt

El algoritmo SHA1 está definido en FIPS 180-1: http://www.itl.nist.gov/fipspubs/fip180-1.htm

El algoritmo SHA256 está definido en FIPS 180-2: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf

El algoritmo Tiger está definido en: http://www.cs.technion.ac.il/~biham/Reports/Tiger/

El algoritmo Whirlpool está definido en: http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html

Teoría de Operación

  • main.cpp
    • configura el sistema
  • dig.cpp
    • itera a través de los directorios individuales
    • llama a hash_file() en hash.cpp para cada archivo a hashear
  • hash.cpp
    • realiza el hash de cada archivo
  • display.cpp
    • almacena/muestra los resultados
Descargar herramienta