PDA

Visualizza la versione completa : [C] Algoritmo MD5 in ricorsione per trovare il source


andr3a
20-06-2005, 19:47
Salve :zizi:
dopo aver rotto le bolas con questo ANSI C che comincia quasi a piacermi, dopo essere stato ribollato a programmazione, dopo aver deciso di scrivere ANSI C fino al prossimo appello al fine di sperare di passare, dopo aver scoperto che il prof ama la ricorsione, qualunque essa sia, ecco che mi sono cimentato in un sistema completamente svincolato di ricorsione in grado di creare tutte le possibili stringhe da un array di caratteri, esempio se l' array e' 01 creera' in ricorsione 0, 1, 00, 01, 10, 11 ... quindi tutte le possibili stringhe da len 1 a len X .... a seconda di quanto imposto la len , ovviamente, e tante stringhe a secondadi quanti caratteri metto nella stringa da usare per la ricorsione ...

solo che dopo aver fatto questo trick con un programma che non occupa oltre i 700 Kb in fase di utilizzo (22Kb il file .exe), mi son detto , e cosa diamine me ne faccio di sto' programma adesso ??? :zizi:

Semplice, hasho tutto e provo a vedere quanto e' veloce sto' C scritto in ANSI al fine di provare a tornare in dietro da una stringa hashata ... in poche parole tramite un brute force , provo a tornare in dietro.

Il programma e' un unico file eseguibile per windows, la GUI e' in Python e Tkinter (non ho trovato niente di Free e semplice per il solo C), il "cerca stringa" e' in ANSI C compilato in -ansi -Wall -O file.c -o file

Mi dite cosa ne pensate ?

Grazie e mi scuso se ho sbagliato sezione ... il fatto e' che magari interessa piu' ai programmatori che a quelli di annunci che guardano se il sito e' validato W3 oppure no :stordita:
( e cmq si, e' validato :fagiano: )

Leggete credits e soprattutto il README, grazie :ciauz:
http://www.devpro.it/md5/

piero.mac
20-06-2005, 20:00
Ma.... bisogna inserire a manina l'hash??? non si puo' fare un copia incolla????

:confused:

andr3a
20-06-2005, 20:10
Originariamente inviato da piero.mac
Ma.... bisogna inserire a manina l'hash??? non si puo' fare un copia incolla????

:confused:
il programma accetta un hash e prova a trovare la stringa usata nel source ... se hai un hash da provare bene, senno' che senso ha farlo per riprenderlo ? ( mi leva la suspance :fagiano: )


Esempi:
numerico
01cfcd4f6b8770febfb40cb906715822

alfanumerico lowercase
30f5eef91a397e4bbab4d93aeb286aef

alfanumerico uppercase
9c8c7d6da17f5b90b9c2b8aa03812ab4

alfa e basta case insensitive
8c80b057bc0b599b48cbd144558aeada

alfanumerico case insensitive
4cd08a5a9da1312eb45c897a1452521c

alfanumerico case insensitive con caratteri speciali
29663634231e51317b2a2cf9967a05ac



altri ... fate i vostri tests :D




[editato]
questa puo' metterci piu' di un minuto ... e' una alfabetica da 5 lower case senza caratteri speciali
1eb230e901f431d3532d2c47c4fe5fce

piero.mac
20-06-2005, 20:24
Non mi sono spiegato.... bisogna digitare 32 caratteri senza poterli copiare/incollare????

Di hash da provare ne ho a valanga... ma mi turba i gioielli doverli digitare a mano. :stordita:

marketto
20-06-2005, 20:40
Originariamente inviato da piero.mac
Non mi sono spiegato.... bisogna digitare 32 caratteri senza poterli copiare/incollare????

Di hash da provare ne ho a valanga... ma mi turba i gioielli doverli digitare a mano. :stordita:
:dott:

ctrl+c
ctrl+v


carino, ho provato gli hash da te forniti ed effettivamente funziona :fighet:



:ciauz:

andr3a
21-06-2005, 07:56
Originariamente inviato da piero.mac
Non mi sono spiegato.... bisogna digitare 32 caratteri senza poterli copiare/incollare????

Di hash da provare ne ho a valanga... ma mi turba i gioielli doverli digitare a mano. :stordita:
ah ho capito ... hai scritto senza vedere il programma :madai!?:

... o senza usare ctr+v :stordita:
effettivamente, abituato come sono a usare la tastiera per i copia e incolla non mi ero nemmeno accorto che l' entry delle Tk non hanno il menu' per il paste :biifu:

andr3a
21-06-2005, 08:54
ho aggiornato il programmino ed ho aggiunto il taglia, copia e incolla via mouse ... non sapevo che Tkinter lo volesse impostato a manina quando tutte le altre li mettono di default :bh:

scusate, ora e' completo ?

speriamo :fagiano:

andr3a
21-06-2005, 09:07
Originariamente inviato da marketto

carino, ho provato gli hash da te forniti ed effettivamente funziona :fighet:

grazie , funzionare funziona e da quel poco che ho testato anche quando sembra piantarsi e manda la CPU a 99% di fatto trova, dopo N secondi / minuti / ore , quanto richiesto .

Purtroppo il brute force e' sempre pesante e speravo che in ANSI C sarebbe stato velocissimo ma ovviamente sapevo che per motivi ovvi non sarebbe stato immediato, altrimenti l' md5 sarebbe gia' "caduto" da un pezzo.

E' comunque 10 volte piu' veloce della stessa cosa fatta con altri linguaggi pero' penso che la parte piu' utile ed efficace sia solo quella numerica, per soli hash numerici, fino a 8 caratteri impiega anche tanti minuti ma ha sempre trovato tutto ... il resto porta veramene al limite della pazienza, soprattutto se non si sa quale sia il sorgente dell' hash e si va a tentativi , si rischia di attendere ore per poi magari non trovare niente :bh:

Probabilmente in ASM sarebbe stato ancora piu' veloce ma purtroppo non conosco ASM :fagiano:

Se qualcuno potesse fare dei tests con applicativi analoghi in ASM e dirmi di quanto sia la differenza gliene sarei grato :ciauz:

maiosyet_2
21-06-2005, 11:54
Farlo in ASM un lavoraccio assurdo, io tenderei ad escluderlo. Piuttosto, si potrebbero incrementale molto le applicazioni del tuo programma utilizzando le ottimizzazioni di gcc - purtroppo non avendo Windows non ho potuto provare il tuo programma e non essendoci i sorci non posso compilarlo.

Ne esiste uno analogo al tuo da qualche anno, sul mio p4 2800Mhz testa 4.7 milioni di hash al secondo, quasi 6 milioni al secondo se ricompilato con un po' di ottimizzazioni. Il tuo?

DYNAM!C+
21-06-2005, 12:00
posso farlo in asm...

se mi dai l'algoritmo spiegato bene, x generare l'hash md5 data una sequenza di bytes :)

Loading