Pokaż wyniki 1 do 7 z 7

Temat: md5brute.pl

  1. #1
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie md5brute.pl

    Hej!

    Odnosnie dyskusji zapoczatkowanej przez ble34 - jakby ktos chcial sobie wygenerowac rainbow-tables do md5 albo lamac hashe metoda brute-force, to bardzo prosze... Skrypt jest prosty, banalnie prosty, nie jest optymalny w zadnym kierunku (a na pewno nie wydajnosci czy tez szybkosci dzialnia), jego napisanie zajelo doslownie kilka minut.

    Na maszynach DualCore i podobnych (oraz na prawdziwych SMP jak znam zycie) dziala na 1 CPU, nie posiada mozliwosci okreslenia zakresu lamania hasel (zacznij od .... skoncz na ....) co umozliwiloby puszczanie fragmentow na roznych maszynach, itd... Kazde uruchomienie liczy od nowa dla kazdej dlugosci hasla, wiec generowanie hasha dla 5 znakow oznacza generowanie rowniez dla 1, 2, 3 i 4 znakow...

    Jedyny parametr jaki pobiera (zreszta nie jest obowiazkowy) to dlugosc hasla. Zakres znakow to wszystko co udalo mi sie wpisac z klawiatury, czyli:

    Kod:
    1234567890-=!"&#163;$%^&*()_+qwertyuiop[]QWERTYUIOPasdfghjkl;'#ASDFGHJKL:@~zxcvbnm,./ZXCVBNM<>?\|`&#172;
    ... jak widac nie ma znaku euro ale ma spacje
    Kod na koncu ale dla Waszej wiedzy - rozmiar wynikow:
    • 1 znak - 2 444 bajtow
    • 2 znaki - 243 580 bajtow (~243.5kB)
    • 3 znaki - 23 247 422 bajtow (~23.25MB)
    • 4 znaki - jeszcze generuje... ale patrzac na tempo przyrostu, mozna szacowac ze nastepny plik bedzie 100x wiekszy (ouch!) co idzie w parze z iloscia znakow dopuszczonych w hasle


    Kod:
    #!/usr/bin/perl
    $|++;
    use strict;
    use Digest::MD5 qw(md5_base64);
    
    my $chars = $ARGV[1] || qw(1234567890-=!"&#163;$%^&*()_+qwertyuiop[]QWERTYUIOPasdfghjkl;'#ASDFGHJKL:@~zxcvbnm,./ZXCVBNM<>?\|`&#172;);
    my @chars_arr = split(//, $chars);
    push @chars_arr, ' ' if defined $ARGV[2];
    
    my $len = $ARGV[0] || 1;
    &count($len-1);
    
    sub count {
        my $gen = $_[0];
        my $base = $_[1];
        if ($gen > 0) {
    	for (my $z=0; $z<=$#chars_arr; $z++) {
    	    &count ($gen-1, $base . $chars_arr[$z]);
    	}
        } else {
    	for (my $z=0; $z<=$#chars_arr; $z++) {
    	    my $str = $base . $chars_arr[$z];
    	    print md5_base64($str) . " $str\n";
    	}
        }
    }
    Jesli ktos czegos nie rozumie w zakresie obslugi programu to najwidoczniej nie jest to program dla niego. Milej zabawy...

    UWAGA:
    Program dostarczam "as-is". Uzywasz programu na wlasna odpowiedzialnosc!
    Ostatnio edytowane przez TQM : 08-07-2007 - 13:58
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Zmiany w kodzie:

    1. linia "my $chars..." dodalem "$ARGV[1] " co oznacza ze mozna podac programowi 2 parametr - md5brute.pl <max_dlugosc> <zestaw_znakow>
    2. Jesli poda sie 3 parametry to jeszcze do zestawu zostanie dodana spacja - wartosc 3 parametru jest dowolna - jesli tylko jest to spacja bedzie dodana

    Kod:
    $ ./md5brute.pl 2 abc space
    QSS8CpM1wn8IbyS6IHpJEg aa
    GH70Q2Ei0cwvQNwrkvDroA ab
    4gdUdClJg+AT7k3SIBx6cw ac
    mQIMskvRMjjZB8ZcwrV8Aw a 
    BxWcR+4bGa5PucQNSAhWxA ba
    Ia0L2Da5DQj0z2QLTCmOfA bb
    U2CvNb3p69jwH0ktwFlZPA bc
    +/iFUpeVIbeTWL52N9l9iA b 
    VDXGntO8xbLk1YDjk+Nz0w ca
    0Nf9tpd7JpKftoxgg8C0OQ cb
    4DI6kDmt0peL9bSVUFcsfA cc
    lADr8iP1D/j8yzLtE+qBng c 
    lSmI2pf72PLqZZkMA+rEJQ  a
    9olwc922UN5gBW+k85T0hw  b
    m/UjF2c0D9HPGL0WLqF4fw  c
    I7WN7xG0VyfTNRcCUV+Grw
    Ostatnio edytowane przez TQM : 08-07-2007 - 13:59
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3
    Zarejestrowany
    Jan 2007
    Postów
    695

    Domyślnie

    TQM... mówcie mi co chcecie ale jesteś jak dla mnie geniuszem
    Zbliża się Trollmagedon...

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Gdzie tam geniusz... a jak myslisz mozna narysowac w Logo platek Kocha dowolnego stopnia w 6 linijkach kodu?! Chyba tylko przez rekurencje wykorzystujac zakresy widocznosci zmiennych hehe...

    EDIT:
    Program jednak liczy warianty krotsze niz zadana dlugosc... Widze bedzie jeszcze kilka wersji :P ale to juz prywatnie jesli ktos chce - prosze PM.

    Wlasnie pracuje nad kolejna modyfikacja, ktora pozwoli wznawiac prace albo liczyc blokami od ... do ... co uprosci skladowanie i pozwoli dzielenie pracy miedzy ludzi

    Robilem proste obliczenia co i ile bedzie miejsca trzeba, wiec od razu podam tutaj jesli ktos mialby zapedy... bo miejsca na dysku zre niemilosiernie... liczac ze koniec linii w formacie UNIX (1 bajt) a nie Windows (2 bajty) bo byloby wiecej... Proste szacunki dla formatu w jakim program zwraca dane sa ponizej.

    Hasla z zakresu A-Za-z0-9 - bez znakow specjalnych:
    • 1 znak - 2170 bajtow
    • 2 znaki - ok 136kB
    • 3 znaki - ok. 8.6MB
    • 4 znaki - ok. 535MB
    • 5 znakow - ok. 34.1GB
    • 6 znakow - ok. 2.12TB (!!!)
    Ostatnio edytowane przez TQM : 08-07-2007 - 13:14
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #5
    Zarejestrowany
    Jan 2007
    Postów
    695

    Domyślnie

    ... dla mnie to i tak czarna magia:P ale kto wie moze z czasem. Ale ze przepraszam ile?! 2,12 TB?!?!
    Zbliża się Trollmagedon...

  6. #6
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Tak tak... Polecam http://en.wikipedia.org/wiki/Terabyte szczegolnie w czesci 'Terabytes in use'. Teraz nic dziwnego ze Rapidshare jest tak powolny i ma takie ograniczenia, skoro jak podaja, przechowuje 1PB (petabajt) danych

    EDIT: Jesli ktos chce poprawic sobie kod to bardzo prosze... KOD ZAWIERAL BLAD (juz naprawiony) ktory zwyczajnie przeoczylem a raczej przedobrzylem Temat traktuje jako zamkniety - mam nadzieje, ze rzucilem nieco swiatla na kwestie atakow brute-force albo za pomoca tablic rainbow-tables.

    EDIT 2:
    Podliczylem zapotrzebowanie na przestrzen dyskowa... hmmm... dla zestawu A-Za-z0-9 bez spacji i hasle dlugosci 13 znakow pelna tabela mialaby (liczac prosty format danych "hash tekst_oryginalny" 9.4YT (yottabajta) czyli 9.4 septyliona bajtow - P O W O D Z E N I A!
    A gdzie dopiero dojsc do 20 znakow? A gdzie wpisywanie wszystkich znakow z klawiatury (co daje nie 62 a 97 dopuszczalnych znakow w hasle)? Wtedy mamy dla 12 znakow 31.2YT danych w plaskim pliku tekstowym, bez indeksow do przeszukiwania itd. Dochodzac do 20 znakow dlugosci mamy juz prawie 2.93 YT^2 - pisze YT do kwadratu bo dalej juz nie ma jednostek... ale dla obrazu 1 YT to 10^24 bajtow a my mowimy o 2.93*10^41 bajtow.

    Literatura:
    1. http://lasecwww.epfl.ch/~oechslin/pu...s/crypto03.pdf
    2. http://www.antsight.com/zsl/rainbowcrack/#Documentation
    Ostatnio edytowane przez TQM : 08-07-2007 - 23:01
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #7
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Wydaje mi sie ze juz nic wiecej nie bedzie (po 2 aktualizacji poprzedniego postu) - jesli ktos mialby cos wiecej do dodania (rozsadnego) to prosze PM. Na razie watek zamykam.

    EDIT: szkoda tez ze kazdy lyknal to co napisalem, nie zastanawiajac sie nad tym co i jak skrypt robi Ciekaw jestem ile czasu zajmie az ktos sie zglosi i powie "TQM, ten skrypt jest do dupy bo..."
    Ostatnio edytowane przez TQM : 08-07-2007 - 23:41
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj