Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 26

Hybrid-Darstellung

  1. #1
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard

    also für die hashs nehm ich die hashlib++, dass diese viel zeit braucht is mir eig. bewusst aber ich glaub nicht dass ich daran viel drehen kann da meine kenntniss dafür 1. nicht ausreichen und die 2. schon ziemlich ausgereift is.

    ein anderes problem das ich gerade hab is dieses:
    Code:
    char passwort[14]; //13 stelliged passwort+\0
    char valar[93];
        valar[0]="a";
        valar[1]="b";
        valar[2]="c";
        valar[3]="d";
        ......
        valar[88]="W";
        valar[89]="X";
        valar[90]="Y";
        valar[91]="Z";
        valar[92]="\0";
    strcat(passwort,valar[m]);
    hier spuckt mir der compiler ne fehler meldung aus weil valar vom typ const char* sein muss und ich hab um ehrlich zu sein ka wie ich das hinbekomm =/
    In§@N¡T¥

  2. #2
    Trojaner
    Registriert seit
    16.03.2009
    Beiträge
    91

    Standard

    Was mir spontan einfällt wäre dies:

    Sollte das Programm das erste mal gestartet werden, so legt es eine .txt an in der die ganzen berechneten Hashes liegen(so: HashW).
    Wenn du es nun ein zweites mal aufrufst brauchst du sie nicht mehr berechnen sondern suchst einfach die Datei nach dem passenden Hash durch.

    Ob dies schneller ist weiß ich nicht, denke aber schon.

    MfG Interceptor
    [S]/[B]:

  3. #3
    Fortgeschrittener Avatar von The-God-of-all
    Registriert seit
    02.09.2007
    Beiträge
    46

    Standard

    Zitat Zitat von Interceptor Beitrag anzeigen
    Sollte das Programm das erste mal gestartet werden, so legt es eine .txt an in der die ganzen berechneten Hashes liegen(so: HashW).
    Also wenn man das schon so machen will dann sollte man schon Rainbow Tables nehmen, wenn man nämlich bedenkt, dass er mit 96 Zeichen bis 13 Buchstaben machen will dann kommt man auf 96^13 Passwörter (Galube mir so viel kriegst du nicht auf die Festplatte). Abgesehen davon, dass die Datei zu groß wird (Wenn ich das richtig sehe mehr als 1 TB) dauert das schreiben auf die Festplatte sehr lange, damit kommt man dann sicher nicht mehr auf 8 Mio Hashs/s. Beim nächsten mal muss die Datei dann eingelesen werden. Wenn die Datei nicht nach Hash sortiert ist (was der Fall sein wird) dann geht keine Binäre Suche sprich es müsste in einer TB großen Datei nach einem Wert gesucht werden. Das dauert länger als der Bruteforce so würde ich mal so behaupten.
    "Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher."
    Albert Einstein

  4. #4
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard

    richtig... das wären ca. 33*10^24 passwörter X_x, die suche würde in dem fall sorgar in sql ewig dauern, ne txtdatei zu durchsuchen wäre unter umständen sorgar unmöglich... ich hab das jetzt alles auf char umgestellt, aber für meine 7,2mio berechnungen brauch ich immernoch 1:02 minuten >.< weis echt nicht was ich noch tun kann^^ das einzige was mir jetzt noch einfällt ist dass das hashen zu lange dauert wobei ich mich dann frage wie das die anderen cracker machen...
    In§@N¡T¥

  5. #5
    Trojaner
    Registriert seit
    16.03.2009
    Beiträge
    91

    Standard

    Stimmt das habe ich nicht bedacht, habe nicht gelesen dass er bis zu 13 Stellen haben will..

    MfG Interceptor
    [S]/[B]:

  6. #6
    Stanley Jobson Avatar von Bonkers
    Registriert seit
    01.02.2010
    Beiträge
    735

    Standard

    Also vielleicht ich stehe gerade massiv auf dem Schlauch, aber warum zum Teufel löst du das mit den ganzen For-Schleifen? Warum nicht einfach rekursiv?

    Code:
    void btf(int size, int pos, char curr[]) {
    char* charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
    int i;
    if(pos < size){
    for(i=0; i<strlen(charset);i++){
            char test[strlen(curr) + 2];
            strcpy(test, curr);
            int len = strlen(test);
            test[len] = charset[i];
            test[len+1] = '\0';
            btf(size, pos+1, test);
    }} else {
    	if(match(crackme, curr) == 1) {
    	printf("Your Hash has been Cracked. md5( %s ) == %s\n", curr, crackme);
    	exit(0);
    	}
    	}
    }
    Ist vielleicht auch nicht perfekt, aber berechnet auch alle Kombinationen aus dem gegebenen Charset.
    (Siehe http://free-hack.com/ansi-c-c-c/5623...5-cracker.html )

    Ich hoffe mal ich hab auch alles richtig verstanden, und hab jetzt nicht aus versehen Mist gepostet

    Blackberry: der eine typ ist danach gestorben
    Bonkers: Echt?
    Blackberry: jep

  7. #7
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard

    boah danke^^ genau danach hab ich gesucht... im ersten post sagte ich ja bereits dass mir meine funktion nicht gefällt weil 1. der aufruf scheiße ist und die 1000 if-bedingungen auch... wieso ich es nicht so gelöst hab is einfach... ich weis was rekursive funktionen sind und wie sie funzen, aber wie ich damit ein eigenes problem löse, das is mir atm noch etwas zuviel >.<
    jetzt werd ich mir das ganze mal anschaun, weil ich um ehrlich zu sein noch nicht alles versteh was in dieser funktion steht, und auf C&P steh ich nicht^^
    In§@N¡T¥

  8. #8
    Fortgeschrittener Avatar von The-God-of-all
    Registriert seit
    02.09.2007
    Beiträge
    46

    Standard

    Also Bonkers ich muss dir natürlich recht geben, dass die Art mit den vielen For Schleifen nicht so besonders schön ist (nicht flexibel, man kann nicht so ohne weiteres die Länge auswählen etc.). Aber der Code wie du ihn gepostet hast hat einige Nachteile was die Performance betrifft.
    1. Das charset wird innerhalb der Funktion die Rekursiv aufgerufen wird deklariert. Das bedeutet, dass bei jedem Aufruf ein neues char Array mit dem Charset als Inhalt erzeugt wird. Das ist nicht sonderlich performant. Das sollte eher als Parameter übergeben werden von der FUnktion die die Rekursive Funktion aufruft.
    2. Du rufst immer wieder die Funktion strlen auf. Einmal aufrufen und ab da dann immer übergeben und als feste Variable verwenden wäre wesentlich schneller.
    3. Du kopierst den String immer wieder. Auch das führt zu einem erheblichen Performance Verlust. Das ist bei Gaaras Source Code nicht der Fall. In der Hinsicht hin ist sein Source Code wesentlich perdormanter als deiner.
    "Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher."
    Albert Einstein

  9. #9
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard

    was ist aber wenn ich das ganze angeh wie bei meiner funktion, d.h. alle nachteile ausbügle aber das ganze rekursiv löse? bin ich dann nur flexibler oder auch schneller?

    //edit

    wow, danke bonkers für die kommentierung, das hilft mir sehr
    In§@N¡T¥

  10. #10
    Stanley Jobson Avatar von Bonkers
    Registriert seit
    01.02.2010
    Beiträge
    735

    Standard

    Code:
    void btf(int size, int pos, char curr[]) { // size = Aktuelle Länge; pos = Aktuelle Position; curr = Das aktuelle Passwort
    char* charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; // Das Charset halt :D
    int i;
    if(pos < size){ // Wenn wir noch nicht beim letzen Buchstaben sind...
    for(i=0; i<strlen(charset);i++){ // Gehe das ganze Charset durch...
            char test[strlen(curr) + 2]; //Hänge die Buchstaben hinten an...
            strcpy(test, curr);
            int len = strlen(test);
            test[len] = charset[i];
            test[len+1] = '\0';
            btf(size, pos+1, test); // Wir sind ja nicht beim letzten Buchstaben, also rufen wir uns selbst auf. Wenn der letzte Buchstabe erreicht ist, dann gehen wir wegen der For oben im Charset eins weiter. Das macht natürliche jede Instanz von BTF, und somit kommst du auf alle Möglichkeiten.
    }} else { // wir haben ein Passwort generiert!
    	if(match(crackme, curr) == 1) { // Passt der Hash?
    	printf("Your Hash has been Cracked. md5( %s ) == %s\n", curr, crackme); // Ausgabe, wir haben was gecracked!
    	exit(0);
    	}
    	}
    }


    In der Hinsicht hin ist sein Source Code wesentlich perdormanter als deiner.
    Mir geht es auch absolut nicht um Geschwindigkeit, sondern eher um die Rekursiven Funktionen. Wenn ich was cracken will dann löse ich das über einen GPU-Cracker...

    Blackberry: der eine typ ist danach gestorben
    Bonkers: Echt?
    Blackberry: jep

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Code Help! PLZ
    Von unna456654 im Forum (X)HTML & CSS
    Antworten: 1
    Letzter Beitrag: 21.12.2008, 13:36

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •