Come identificare gli hash [chiuso]

1

Come posso identificare un hash? Non solo con la lunghezza, voglio dire: come so, gli hash specifici hanno charset specifici. Dove posso trovarli? Ho bisogno di queste informazioni per creare uno strumento di indentificazione hash. (questo è un post univoco, l'altro non ha ricevuto una risposta completa).

    
posta Vilius Povilaika 18.06.2015 - 16:46
fonte

3 risposte

2

C'è una differenza tra un hash come definito per un protocollo specifico e un hash crittografico. Un hash crittografico accetta semplicemente un messaggio di x bit e restituisce n bit dove x può essere qualsiasi numero positivo o zero e n è la dimensione di uscita dell'hash. Quindi in questo senso un hash crittografico non definisce la qualsiasi codifica. Un hash crittografico è indistinguibile da casuale a una persona che non conosce l'input (a parte la dimensione dell'output). Pertanto non è possibile distinguere tra SHA-256(x) e SHA-512/256(x) senza conoscere x .

Un hash può tuttavia essere codificato insieme a vari parametri, specialmente se si tratta di un hash della password (che in realtà è una funzione di derivazione della chiave basata su PBKDF o password). In tal caso dipende dal protocollo che genera l'hash. Questo è ciò che i siti come quello indicato da User456 mostra. Questi valori dovrebbero essere interpretati solo per quei protocolli specifici. Questi protocolli tuttavia non sono stati progettati da una specifica comune; i protocolli non devono rispettare alcuna regola . L'output di questi protocolli può benissimo sovrapporsi .

Quindi l'unico modo per dire quale hash codificato è per un protocollo specifico è confrontare l'hash codificato con il formato definito dal protocollo. Le espressioni regolari potrebbero essere utilizzate per filtrare i candidati. Dovresti aspettarti un mix di esadecimali, base 64, numeri decimali e, naturalmente, caratteri separatori per la maggior parte di essi.

    
risposta data 18.06.2015 - 23:39
fonte
1

Il corto è che non puoi.

Gli hash non producono caratteri codificati. Emettono byte e dovrebbe apparire una buona funzione di hash per generare tutti i byte di output in modo casuale.

Spesso, gli output di hash vengono successivamente codificati per la lettura da parte degli umani o per la compatibilità; ad esempio, come hex o base64. Ma i eventuali dati possono essere codificati in questo modo, e non c'è modo di distinguere l'output di un hash.

Se vedete 256 bit di dati apparentemente casuali, potrebbe essere un hash (ad esempio, SHA-256 o BLAKE2b / 256), da 128 a 255 bit di dati crittografati con un codice a blocchi a 128 bit (ad es. AES- CBC), 256 bit di dati crittografati con un codice di flusso (ad esempio, AES-CTR), dati puramente casuali (ad esempio, uscita da /dev/random ), output da un DRBG (ad esempio, il Yarrow CSPRNG) o uno qualsiasi di un numero di altre possibilità. L'unico modo per saperlo è attraverso il contesto.

    
risposta data 18.06.2015 - 23:41
fonte
0

Dai un'occhiata alla seguente pagina:
link

Ti fornirà alcuni esempi di hash. Puoi utilizzare strumenti come hashid o identificatore di hash per provare a identificare vari hash (entrambi sono inclusi con Kali se stai girando su una VM Linux). La parte delicata, come ho visto di recente, è che a volte è un hash e talvolta è una password o un hash crittografato. Oppure altre volte è un hash codificato in base64, quindi è necessario prima decodificarlo e quindi identificare l'hash. E così via in modo che quello che sembra un hash non sia solo un hash.

Quindi in alcuni casi, identificare l'hash è più difficile di altri (almeno nella mia stima per i novizi, altri qui potrebbero essere in grado di fornire informazioni migliori).

    
risposta data 18.06.2015 - 22:33
fonte

Leggi altre domande sui tag