Newsgroup: it.comp.sicurezza.varie
Titolo: Dizionari per forza bruta

Ho un hash di una password, costruito con un algoritmo semplice: per ogni
carattere della password corrisponde il codice unicode, moltiplicando i
codici si ottiene l'hash numerico.
Ho costruito un programmino che forza l'hash, ma all'aumentare dei
caratteri aumenta esponenzialmente il tempo di ricerca.
Quindi stavo cercando un dizionario _italiano_ che mi permettesse l'attacco
con dizionario per le password lunghe. Avete idea di dove posso scaricarne
una?
Avete qualche altro consiglio su come velocizzare questo attacco?
Grazie
-- 
        Sephiroth
_________________________________________________________________
E-Mail:sephiroth88(at)
supereva.it
 | Linux Registered User:181013

Avete qualche altro consiglio su come velocizzare questo attacco?
Se ho capito bene, il codice numerico complessivo e' dato da
	hash = PROD(Unicode(password[i])*K);
con i fra 0 e strlen(password), e K fissa? Si conosce una coppia (codice
+ password)? Oppure K e' usata a mo' di salt, e se si', che range ha?
Leonardo
-- 
Questo messaggio è NAGWARE. Per disattivare ironia trita, giochi
di parole, volgarita' gratuite ed inviti a rileggersi i messaggi
gia' passati e/o consultare 
http://groups.google.com
, effettuare
un versamento di 25 euro come tariffa di registrazione helpdesk.

+ password)? Oppure K e' usata a mo' di salt, e se si', che range ha?
In C-like e' qualcosa tipo:
hash = 1;
per i da 0 a lunghezza(password) {
	hash = hash * unicode(carattere[i]);


}
Fantavoloso davvero. Dove e' usato questo algoritmo, per curiosita'? E'
vulnerabile ad un fetentissimo backtracking 2/LR seguito da un (rapido)
controllo su un dizionario di permutazioni:
aglimoort:algoritmo,logaritmo,mortaglio,ritmologa
...fermo restando che neanche serve - perche' se il sistema calcola sul
serio la riconvalida in quel modo, mettendo password "algoritmo" verra'
accettato "ritmologa", per una nota proprieta' :-) [1].
Questo se hash e' mantenuto in precisione infinita; altrimenti c'e' una
complicazione addizionale dovuta al rollover, e bisogna stabilire dove,
di preciso, il rollover avviene (di norma dalle parti di 2E+9, o 2^31).
Leonardo
[1] d'altro canto, se il controllo vero e' in uno stadio successivo, lo
    hash dara' una quantita' 'mpressionante di falsi positivi
-- 
Says I, "My young lassie, I canna' weel tell ye,
The road and the distance I canna' weel gie,
But if you'll permit me tae gang a wee bittie,
I'll show you the road an' the miles tae Dundee".

 
http://groups.google.com/advanced_group_search

    hash dara' una quantita' 'mpressionante di falsi positivi
Come spiegato sopra, i falsi non funzionano, visto il controllo successivo.


possibile il backtracking, in quanto l'hash non e' preciso.
Ma allora hai una proporzionalmente maggiore probabilita' di falsi
positivi.
Sia che tu inserisca "logaritmo", sia che tu inserisca "magazzino"
otterrai valori compatibili. A questo punto la lista di parole che
matchano quell'hash e' estesa a tutte quelle entro una distanza di
Levenshtein (in realta' una versione lamer della medesima :-) ) di
'x' da una qualsiasi permutazione della password.
Mi domando se non converrebbe usare una permutazione di sillabe (a
patto, si intende, di essere sicuri di avere a che fare con parole
italiane sillababili). Una sillaba ha un "peso" maggiore di quello
di una singola lettera, e in dodici lettere ci stanno nove sillabe
al massimo (mi pare).
Si puo' provare a effettuare una fattorizzazione approssimativa di
un hash (bisognerebbe vedere l'ordine di grandezza, dei numeri che
andiamo a frullare, e se sono mascherati dal 'rumore' delle ultime
nove cifre... in quel caso e' grama) e determinare quali sillabe e
con quali probabilita' costituiscono la parola.
Leonardo creativo


con quali probabilita' costituiscono la parola.
Parte dello script e' questo:
//========================
password = document.textBox.value.toLowerCase()
pass = 1
for(i = 0; i < password.length; i++) {
pass *= password.charCodeAt(i);
}
if(pass == 2.1814165130690035e+24 || pass == 811091030400){
window.location=password+".htm"}
//========================
Il secondo hash non ho capito cosa c'entri, ma dato che ho avuto conferma
che la password sia di 12 caratteri, allora quell'hash e' da escludere,
quindi guardiamo solo quel 2....e+24.
La fattorizzazione non e' certo cosě immediata, e visto l'approssimazione
ci sarebbero un po' di combinazioni.


Grazie ho risolto attaccando con il dizionario italiano che mi ha fornito
Lapalissiano. E' bastato un attimo!
