Hai un hash. È una lunga stringa di caratteri esadecimali, o forse ha uno strano prefisso come $2b$. Devi sapere quale algoritmo lo ha creato: per una sfida CTF, un controllo di sicurezza, il recupero della password o semplicemente per curiosità.
Ecco la guida definitiva per identificare qualsiasi tipo di hash in base alla lunghezza, al set di caratteri e al formato.
Cos'è un hash?
Un hash è una stringa di lunghezza fissa prodotta da una funzione matematica unidirezionale. Inserisci qualsiasi input (una password, un file, un messaggio) in un algoritmo di hashing e otterrai un'impronta digitale univoca di dimensione fissa. Lo stesso input produce sempre lo stesso output, ma non è possibile invertire il processo per recuperare l'input originale.
Le funzioni hash vengono utilizzate ovunque: archiviazione di password nei database, verifica dell'integrità dei file, firme digitali e deduplicazione dei dati.
Come identificare un hash: il metodo rapido
Il modo più veloce per identificare un hash è tramite il suo conteggio dei caratteri e set di caratteri. La maggior parte degli hash sono costituiti da caratteri esadecimali (0–9, a–f), ma alcuni algoritmi come bcrypt e SHA-512 crypt utilizzano un alfabeto Base64 più ampio.
Passaggio 1: Conta i caratteri. Passaggio 2: Nota il set di caratteri (solo esadecimale o alfanumerico+speciale). Passaggio 3: Controlla la presenza di un prefisso (bcrypt inizia con $2b$, la cripta SHA-512 inizia con $6$).
Oppure usa semplicemente il nostro Strumento Identificatore Hash per identificarlo automaticamente.
Tabella di riferimento per l'identificazione dell'hash
| Tipo di hash | Lunghezza | Set di caratteri | Prefisso / Note |
|---|---|---|---|
| MD5 | 32 | Esadecimale (0-9, a-f) | Nessun prefisso |
| SHA-1 | 40 | Esadecimale | Nessun prefisso |
| SHA-224 | 56 | Esadecimale | Nessun prefisso |
| SHA-256 | 64 | Esadecimale | Nessun prefisso |
| SHA-384 | 96 | Esadecimale | Nessun prefisso |
| SHA-512 | 128 | Esadecimale | Nessun prefisso |
| SHA3-256 | 64 | Esadecimale | Indistinguibile da SHA-256 per lunghezza |
| SHA3-512 | 128 | Esadecimale | Indistinguibile da SHA-512 per lunghezza |
| NTLM | 32 | Esadecimale | Stessa lunghezza di MD5: il contesto conta |
| MySQL 4.1+ | 40 | Esadecimale | A volte preceduto da * |
| bcrypt | 60 | Alfabeto Base64 | Inizia con $2a$, $2b$, o $2y$ |
| Cripta SHA-512 | 106 | Alfabeto Base64 | Inizia con $6$ |
| Cripta SHA-256 | 63 | Alfabeto Base64 | Inizia con $5$ |
| Cripta MD5 | 34 | Alfabeto Base64 | Inizia con $1$ |
| Argon2 | Variabile | Base64+ $ |
Inizia con $argon2id$ o $argon2i$ |
| scrypt | Variabile | Base64+ $ |
Inizia con $s0$ |
| PBKDF2 | Variabile | Base64 o esadecimale | Spesso preceduto da pbkdf2_sha256$ |
| LM Hash | 32 | Esadecimale | Windows legacy: due metà da 16 caratteri |
| CRC32 | 8 | Esadecimale | Molto breve: 4 byte |
| Idromassaggio | 128 | Esadecimale | Meno comune |
| RIPEMD-160 | 40 | Esadecimale | Stessa lunghezza di SHA-1 |
| Adler-32 | 8 | Esadecimale | Checksum, non un hash crittografico |
Identificazione degli hash più comuni
MD5 (32 caratteri esadecimali)
5f4dcc3b5aa765d61d8327deb882cf99
MD5 è l'hash più comune che incontrerai. 32 caratteri esadecimali minuscoli, senza prefisso. Era ampiamente utilizzato per l'archiviazione delle password, ma ora è considerato crittograficamente danneggiato: è veloce da calcolare, il che rende banali gli attacchi di forza bruta.
Comune in: App Web legacy, checksum dei file, sfide CTF, dump delle password del database.
Limitazione: MD5 e NTLM sono entrambi 32 caratteri esadecimali. Se trovi un hash di 32 caratteri da un sistema Windows, probabilmente è NTLM. Da un'app Web, è probabile che sia MD5.
SHA-1 (40 caratteri esadecimali)
5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
40 caratteri esadecimali. Deprecato per la maggior parte degli usi di sicurezza dal 2017 ma ancora comune nei sistemi più vecchi, commit Git, certificati SSL (legacy) e checksum dei file.
Comune in: ID oggetto Git, certificati SSL precedenti, strumenti di verifica dei file.
SHA-256 (64 caratteri esadecimali)
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Lo standard attuale per la maggior parte delle applicazioni. 64 caratteri esadecimali. Utilizzato in Bitcoin (doppio SHA-256), firme JWT, moderni wrapper di archiviazione delle password e TLS.
Comune in: Blockchain, firme API, archiviazione delle password (spesso racchiuse in PBKDF2 o HMAC), verifica dell'integrità dei file.
SHA-512 (128 caratteri esadecimali)
b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86
128 caratteri esadecimali. Più forte ma più lento di SHA-256. Utilizzato in alcuni hashing delle password Linux (/etc/shadow) e applicazioni ad alta sicurezza.
bcrypt (60 caratteri, simile a Base64)
$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW
Il formato hash più riconoscibile grazie al suo prefisso strutturato:
$2b$(o$2a$,$2y$) — versione dell'algoritmo12— fattore di costo (fattore di lavoro), quanti round- Tutto dopo: sale + hash di 53 caratteri combinati
bcrypt è volutamente lento. Non puoi accelerarlo con una GPU, motivo per cui è la scelta giusta per l'hashing delle password. Se vedi una stringa di 60 caratteri che inizia con $2, è bcrypt.
Comune in: App PHP (password_hash()), Ruby on Rails, i framework web più moderni.
NTLM (32 caratteri esadecimali)
b4b9b02e6f09a9bd760f388b67351e2b
Visivamente identico a MD5: 32 caratteri esadecimali minuscoli. NTLM è l'hash di autenticazione legacy di Windows. Se stai eseguendo CTF o pentesting su sistemi Windows, questi appariranno frequentemente.
Come distinguere MD5 da NTLM: Contesto. NTLM proviene da database Windows SAM, Active Directory o strumenti come Mimikatz. MD5 proviene in genere da database di applicazioni Web.
Argon2 (lunghezza variabile, prefisso strutturato)
$argon2id$v=19$m=65536,t=3,p=4$c29tZXNhbHQ$RdescudvJCsgt3ub+b+dWRWJTmaaJObG
Il vincitore del concorso Password Hashing 2015. Progettato per sfruttare la memoria, rendendolo resistente agli attacchi basati su GPU e ASIC. I framework moderni (Django 4+, PHP 8.1+ nativo) stanno adottando Argon2id.
Ripartizione del prefisso: $argon2id$ = variante, v=19 = versione, m=65536 = costo della memoria, t=3 = costo del tempo, p=4 = parallelismo.
Come identificare un hash quando la sola lunghezza non è sufficiente
Alcuni hash hanno lunghezze e set di caratteri identici:
| Collisione | Come distinguere |
|---|---|
| MD5 contro NTLM (32 esadecimali) | Contesto di origine: Windows = NTLM, DB Web = MD5 |
| SHA-1 contro RIPEMD-160 (40 esadecimali) | RIPEMD-160 è molto più raro; SHA-1 è l'ipotesi sicura |
| SHA-256 contro SHA3-256 (64 esadecimale) | Sono necessari metadati o strumenti dell'algoritmo |
| SHA-512 contro SHA3-512 contro Whirlpool (128 esadecimale) | È necessario il contesto o lo strumento hash-id |
Quando la sola lunghezza non basta a risolvere il problema, è necessario:
- Controlla il sistema di origine (sistema operativo, framework dell'app, database)
- Prova a craccare un valore noto per confermare l'algoritmo
- Utilizza uno strumento di identificazione hash che testa più algoritmi
Utilizzo di uno strumento di identificazione hash
Invece di contare manualmente i caratteri, usa il nostro Identificatore hash — incolla qualsiasi hash e:
- Confronta la lunghezza e il set di caratteri con tutti gli algoritmi conosciuti
- Evidenzia i candidati più probabili
- Contrassegna automaticamente i formati con prefisso (bcrypt, SHA-crypt, Argon2).
Ciò è particolarmente utile per le sfide CTF in cui si incontrano formati hash non familiari o è necessario elaborare rapidamente più hash.
Scenari del mondo reale
Scenario 1: hai un dump del database
Troverai una tabella utenti con a password colonna contenente stringhe di 60 caratteri che iniziano con $2b$. Questi sono hash bcrypt. Moderni e implementati correttamente: crackarli è computazionalmente costoso.
Scenario 2: sfida CTF: trovi un file hash
098f6bcd4621d373cade4e832627b4f6
32 caratteri esadecimali → MD5. La corda test hash su questo valore in MD5. Un rapido attacco con elenco di parole con hashcat o john craccherà istantaneamente le password comuni.
hashcat -m 0 -a 0 hash.txt wordlist.txt
Modalità -m 0 è MD5. Se fosse SHA-1, usa -m 100. SHA-256 lo è -m 1400.
Scenario 3: Linux /etc/shadow
$6$rounds=5000$usesomesalt$IxDD3jerizQ5s/bS3FbSsO6hMGFjfSKNBWENHyJ7FXKC4XiuT3pOlLGEBpRiuJ3QGJlyXfS4uNIaVpqEcF2b.
Inizia con $6$ → Cripta SHA-512. Il formato è: $id$salt$hash dove id=6 significa SHA-512.
| ID | Algoritmo |
|---|---|
$1$ |
Cripta MD5 |
$5$ |
Cripta SHA-256 |
$6$ |
Cripta SHA-512 |
$y$ |
sìcripta |
$2b$ |
bcrypt |
Riferimento alla modalità Hashcat
Se stai crackando hash (su sistemi che sei autorizzato a testare), ecco le modalità hashcat per i tipi più comuni:
| Tipo di hash | Modalità Hashcat |
|---|---|
| MD5 | 0 |
| SHA-1 | 100 |
| SHA-256 | 1400 |
| SHA-512 | 1700 |
| NTLM | 1000 |
| bcrypt | 3200 |
| Cripta SHA-512 ($6$) | 1800 |
| MySQL 4.1+ | 300 |
| WPA/WPA2 | 2500 |
Schede di identificazione rapida
- 8 caratteri, esadecimale → CRC32 o Adler-32 (checksum, non criptovaluta)
- 32 caratteri, esadecimale → MD5 o NTLM
- 40 caratteri, esadecimale → SHA-1 o RIPEMD-160
- 56 caratteri, esadecimale → SHA-224
- 64 caratteri, esadecimale → SHA-256 o SHA3-256
- 96 caratteri, esadecimale → SHA-384
- 128 caratteri, esadecimale → SHA-512, SHA3-512 o Whirlpool
- 60 caratteri, inizia con
$2→ bcrypt - Inizia con
$1$→ Cripta MD5 - Inizia con
$5$→ Cripta SHA-256 - Inizia con
$6$→ Cripta SHA-512 - Inizia con
$argon2→ Argon2 - Inizia con
pbkdf2_→ PBKDF2
Identifica il tuo hash adesso
Usa il nostro servizio gratuito Strumento Identificatore Hash : incolla qualsiasi hash e ottieni un'identificazione immediata con punteggi di confidenza e probabili algoritmi.
Strumenti e guide correlati: