C'è un modo per trovare quale tipo di crittografia/codifica viene usato?
Per esempio, sto testando un'applicazione web che memorizza la password nel database in un formato criptato (WeJcFMQ/8+8QJ/w0hHh+0g==
). Come faccio a determinare quale hashing o crittografia viene usato?
Modifica: ho appena notato uno script molto bello chiamato hashID. Il nome lo descrive abbastanza bene.
In generale, usare l'esperienza per fare congetture educate è il modo in cui si fanno queste cose.
Qui c'è una lista con un numero molto grande di uscite di hash in modo da sapere come appare ognuna di esse e creare firme/disegni o semplicemente verificare otticamente.
- [Generatore di Hash Crack Hashes online](https://www.onlinehashcrack.com/hash-generator.php)
- [InsidePro Software Forum > Tipi di hash](https://web.archive.org/web/20160403135857/https://forum.insidepro.com/viewtopic.php?t=8225) (via Archive.org)
Ci sono due *principali* cose a cui prestare attenzione:
- la lunghezza dell'hash (ogni funzione hash ha una specifica lunghezza di uscita)
- l'alfabeto usato (sono tutte lettere inglesi? numeri 0-9 e A-F così hex? quali caratteri speciali ci sono, se ce ne sono?)
Diversi programmi di cracking di password (John the ripper per esempio) applicano alcuni pattern matching sull'input per indovinare l'algoritmo usato, ma questo funziona solo su hash generici. Per esempio, se prendete qualsiasi hash in uscita e ruotate ogni lettera di 1, la maggior parte degli schemi di pattern matching fallirà.
L'unico modo è indovinare. Con l'esperienza, le congetture saranno più corrette.
Per esempio: In base alla lunghezza dell'output: L'output MD5 è 128 bit, o 16 byte, l'output SHA1 è 160 bit, o 20 byte. In base al charset dell'output: BASE64 produce un output con caratteri stampabili.
Alla fine della giornata, è l'approccio prova-e-errore che ti insegna come fare.
L'unico modo è quando c'è qualche metadata che te lo dice. Per esempio, ho lavorato con i PDF ultimamente, e il formato include un dizionario contenente il filtro, l'algoritmo, la dimensione della chiave, ecc. Ma se tutto quello che hai è il testo cifrato, allora tutto quello che hai è un blob opaco di dati.