Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
hashdeep — Set di strumenti di hashing multipiattaforma per il calcolo di digest di messaggi (MD5, SHA-1, SHA-256, Tiger, Whirlpool) con attraversamento ricorsivo delle directory e capacità di controllo dell'integrità dei file. | Kitploit
Strumenti/GitHubGitHub/jessek/hashdeep
Analisi HashInformatica ForenseRecupero DatiDigital Forensics
GitHubjessek/hashdeep

hashdeep

Set di strumenti di hashing multipiattaforma per il calcolo di digest di messaggi (MD5, SHA-1, SHA-256, Tiger, Whirlpool) con attraversamento ricorsivo delle directory e capacità di controllo dell'integrità dei file.

Vedi Repository
7861358 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Questo è md5deep, un insieme di strumenti cross-platform per calcolare hash, o digest di messaggi, per un numero qualsiasi di file, scavando opzionalmente in modo ricorsivo nella struttura delle directory. Può anche prendere una lista di hash noti e mostrare i nomi dei file di input i cui hash corrispondono o meno agli hash noti. Questa versione supporta gli hash MD5, SHA-1, SHA-256, Tiger e Whirlpool.

Vedi il file NEWS per un elenco delle modifiche tra le release.

Vedi il file COPYING per informazioni sulla licenza di questo programma.

Vedi il file INSTALL per le istruzioni (generiche) di compilazione e installazione. Ecco la versione breve che dovrebbe funzionare in molti casi:

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

Nota che devi essere normalmente root per installare nella posizione predefinita. Il comando sudo è utile per farlo. Puoi specificare una posizione di installazione alternativa usando l'opzione --prefix dello script configure. Ad esempio, per installare in /home/foo/bin, usa:

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

C'è documentazione completa su come usare il programma sulla homepage del progetto, https://github.com/jessek/hashdeep

Hash delle release

L'ultima release è la versione 4.4. Ecco gli hash per le versioni Win32:

  • MD5 047ff5311d821f667150f37695bd01b3
  • SHA256 d5e85933e74e5ba6a73f67346bc2e765075d26949c831a428166c92772f67dbc

md5deep vs. hashdeep

Per ragioni storiche, il programma ha opzioni e funzionalità diverse quando eseguito con i nomi "hashdeep" e "md5deep".

hashdeep ha una funzionalità chiamata "audit" che può utilizzare un elenco di hash noti per verificare un insieme di FILE. Gli errori vengono riportati su standard error. Se non vengono specificati FILE, legge dallo standard input.

root@kitploit:~
-a Audit mode. Each input file is compared against the set of knowns. An
   audit is said to pass if each input file is matched against exactly
   one file in set of knowns. Any collisions, new files, or missing files
   will make the audit fail. Using this flag alone produces a message,
   either "Audit passed" or "Audit Failed".
   -v = prints the number of files in each category
   -v -v = prints all discrepancies
   -v -v -v = prints the results for every file examined and every known file.

-k <file> - The -k option must be used to load the audit file

Per eseguire un audit:

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

Nota che l'audit viene eseguito con un file di output hashdeep standard. (Internamente, l'audit viene calcolato come parte del processo di hashing.)

Problemi Unicode

I moderni sistemi basati su POSIX considerano i nomi dei file come una sequenza di byte che vengono visualizzati come desidera l'applicazione. Ciò significa che i nomi dei file contengono tipicamente ASCII ma possono contenere UTF-8, UTF-16, latin1 o anche codifiche Unicode non valide.

I sistemi basati su Windows hanno un insieme di chiamate API per nomi di file basati su ASCII e un altro insieme per nomi di file codificati come UCS-2, che "produce un formato a lunghezza fissa usando semplicemente il code point come unità a 16 bit e produce esattamente lo stesso risultato di UTF-16 per 63.488 code point nell'intervallo 0-0xFFFF" secondo wikipedia. Ma wikipedia contesta l'accuratezza fattuale di questa affermazione nella pagina di discussione. è abbastanza chiaro che nessuno è completamente sicuro di ciò che Windows effettivamente fa, e Windows stesso potrebbe non essere consistente.

La versione 3 di questo programma affrontava questo problema usando la variabile TCHAR per contenere i nomi dei file su Windows e rifiutandosi di stamparli, stampando invece un "?". La versione 4 di questo programma traduce le stringhe TCHAR in stringhe std::string alla prima occasione usando la funzione Windows WideCharToMultiByte. Sono stati aggiunti flag per fare escape dell'Unicode quando viene stampato.

Non c'è modo (apparentemente) su Windows di aprire un nome di file UTF-8; deve essere riconvertito in un nome di file multi-byte con MultiByteToWideChar.

Fortunatamente, non abbiamo mai realmente bisogno di riconvertire.

Nota che su Windows i file hash possono avere caratteri unicode ma il file con gli hash deve avere un nome ASCII.

COMPILAZIONE PER WINDOWS:

-D_UNICODE fa sì che TCHAR sia definito come 'wchar_t'.

COMPILAZIONE PER POSIX:

-D_UNICODE non è definito, quindi TCHAR è definito come 'char'.

In precedenza, le funzioni win32 erano controllate con dichiarazioni #ifdef, come queste:

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

C'era anche un file chiamato tchar-local.h che cambiava effettivamente la semantica delle funzioni su piattaforme diverse, con cose come queste:

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

Questo rendeva il codice molto difficile da mantenere.

Con la riscrittura 4.0, abbiamo modificato questo codice con funzioni C++ che restituiscono oggetti dove possibile ed evitano l'uso di #define in modo che sui sistemi _WIN32 la funzione realpath() venga definita prima del suo utilizzo, e il codice principale manchi della funzione realpath(). Puoi vedere questo in 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
}

Puoi installare mingw e poi semplicemente configurare con qualcosa come:

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

Riferimenti agli algoritmi di hash

L'algoritmo MD5 è definito in RFC 1321: http://www.ietf.org/rfc/rfc1321.txt

L'algoritmo SHA1 è definito in FIPS 180-1: http://www.itl.nist.gov/fipspubs/fip180-1.htm

L'algoritmo SHA256 è definito in FIPS 180-2: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf

L'algoritmo Tiger è definito su: http://www.cs.technion.ac.il/~biham/Reports/Tiger/

L'algoritmo Whirlpool è definito su: http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html

Teoria del funzionamento

  • main.cpp
    • configura il sistema
  • dig.cpp
    • itera attraverso le singole directory
    • chiama hash_file() in hash.cpp per ogni file da hashare
  • hash.cpp
    • esegue l'hashing di ogni file
  • display.cpp
    • memorizza/mostra i risultati
Scarica lo strumento