venerdì 20 aprile 2012

HowSecureIsYourPassword?

Con questo semplice programma è possibile scoprire quanto tempo è necessario ad un hacker per scoprire la vostra password.
Un'oretta di tempo per programmare una semplice applicazione praticamente inutile...
Online esistono servizi che calcolano il tempo necessario a trovare una password tramite un BruteForceAttack come ad esempio l'ottimo howsecureismypassword.net, il mio programma è una semplice versione per Windows.
Il Brute Force o attacco a forza bruta è un metodo con il quale trovare una password. Il BF funziona provando tutte le combinazioni di caratteri del charset (caratteri consentiti). Ovviamente da più tipi di caratteri è composta la password più questa sarà robusta. Per questioni di semplicità ho sintetizzato il charset in questo modo:
- 26 caratteri minuscoli (obbligatori)
- 26 caratteri maiuscoli
- 10 cifre
- 170 simboli e caratteri speciali
Se la password contiene almeno un carattere maiuscolo, un numero oppure un simbolo il charset conterrà l'intera categoria di appartenenza.
Il primo obbiettivo del programma è calcolare la lunghezza del charset. Tramite questa informazione è possibile risalire al numero totale di combinazioni. Per fare ciò bisogna applicare la seguente formula
combinazioni = charset lenght
charset è la lunghezza del charset, lenght è la lunghezza della password.
I numeri risultanti da questa operazione sono enormi, per gestirli un long non basterebbe. Mi sono appoggiato a BigInteger (System.Numerics). Un tipo di intero che non ha limite di dimensione.
Ok, si hanno tutte le password possibili, non resta che dividere per il numero di password al secondo per ottenere quanto tempo è necessario. Il risultato sarà ovviamente in secondi... Per dare un piccolo tocco grafico ho scritto una funzione che converte i secondi in minuti, ore, giorni, mesi, anni ecc..
Il codice è semplicissimo, gli unici commenti che ho inserito sono quelli per i codici ASCII dei simboli che potrebbero non essere immediati...

Download:
Dropbox - Google Drive
Screen:

Nessun commento:

Posta un commento