[Hash Datenbank] Interressierte und Helfer gesucht



  • Hallo Leute,

    vor einigen wochen wollte ich icq auf meinem handy benutzen. Doch wer kennt das nicht, passwort bei icq gespeichert und die sicherheitsfrage (Wie heißt dein Haustier) taugt auch nichts, da schreibweise vergessen. Nach einigen recherchieren im Internet bin ich fündig geworden... icq oder auch andere programme speichern ihre passörter als md5 hash. Also habe ich den hash ausgelesen, mir eine php seite gebastelt die zufällige md5 hashs erstellt und speichert... nach einigen tagen war mein relativ einfaches passwort geknackt..

    Seitdem interessiere ich mich so sehr dafür, das auch schon ein eigener server angeschaft wurde, und auf dem zurzeit per webanwendung die sachen generiert werden.

    Aktuell:
    1,043,769 rows total 😃

    Mein problem ist nun, das der fortschritt zu langsam ist... in den letzten tagen erreiche ich nurnoch sekundenweise einen weiteren eintrag...

    Am anfang waren es mal 120 - 140 datensätze pro sekunde...

    Deshalb habe ich mir gedacht, das ich in C++ eine anwendung schreibe, wo mein pc quasi die berechnung vornimmt und nurnoch die datenbank abfragt und den datensatz einträgt.
    Dann könnte ich das auf vielen rechnern gleichzeitig laufen lassen...
    Aber ich bekomme keine MySQl Verbindung hin, weshalb ich auf die hilfe erfaherener leute angewiesen bin. Ich hatte C++ mal 2 jahre in der schule, doch verbindungen mit datenbanken wurden uns nicht gelehrt.

    Also kurz und knapp ich will eine schöne online rainbowtable aufbauen,
    die bei erfolg mit werbung eventuell gewinne abwirft...
    Es fehlt nurnoch ein team an gleichgesinnten.

    Ich uploade euch mal drei kleine infos, hier die links:

    http://dl.dropbox.com/u/13852022/Main.pdf
    http://dl.dropbox.com/u/13852022/Anwendung%20A_pseud.pdf
    http://dl.dropbox.com/u/13852022/Anwendung%20B_pseud.pdf

    Meine Website... (achtung dsl ist langsam)
    http://109.239.48.54/

    Ich hoffe es gibt welche die sich auch dafür interressieren oder mir helfen wollen...

    gruß cpi



  • Interressantes projekt...

    habe mir des spaßes halber hier mal einen hash generiert...
    http://www.c-plusplus.net/forum/reply277544

    99df95586becb5ab0cf869458c7f96fa (Wer bekommt die lösung raus?)
    und in deiner Datenbank verewigt 😉

    echt ne tolle sache...

    Werde mich nochmal melden, denke mal ich könnte dir ein wenig bei der website helfen...

    PS:
    Ich programmiere nebenbei auch mit c++ aber eine verbindung per odbc oder jdbc ist für mich noch ein geheimniss da blicke ich nicht durch, aber versuchs du mal, frag mal google zu odbc bzw jdbc.

    Edit: Hätte den Hash auch bei dir generieren können, wollte nur wissen ob du richtig rechnest 😉



  • Vor Jahren schon mal irgendwo gesehen ...



  • Moin

    Das Thema interessiert mich auch sehr.

    Such mal im Internet nach "C++ MySQL Connector" Das ist ne Lib mit der du MsyQL Verbindungen herstellen kannst.

    Bei weiteren Fragen helfe ich dir gerne weiter.

    PNoob



  • @cpi:
    Bist du sicher dass du verstanden hast was ein Rainbow-Table ist?
    Kommt mir gerade nicht so vor.



  • @hustbear:
    Ich bin mir ziemlich sicher, das ich dies verstanden habe. Entschuldiege bitte das ich den Begriff "Rainbowtable" benutzt habe, eigentlich sollte es eher heißen Hash Datenbank, da dies treffender wäre.

    @PNoob:
    Danke, ich werde gleich mal google anstrengen und selber ein bischen probieren, werde ggf. Nochmal auf dich zurückkommen.

    @Schmaddy:
    Ja ich habe deinen Text gefunden 😉
    Danke, bei der website könnte man sicher noch ein wenig rumfeilen.
    odbc und jdbc sind mir begriffe, muss da sicher auch nochmal schauen.



  • Kuckst du hier, da hast du deine hash-db:

    http://md5.vienalga.net/



  • Also ich habe jetzt mal ein wenig nach Google: C++ MySQL Connector gegoogelt und irgendwo habe ich etwas zu

    mysql_real_connect
    

    gefunden. Dies hat sich so einfach angehört/gelesen. Und es sah auch wie eine einfache simple funktion aus(wie bei php).Deshalb habe ich ein wenig damit rumgespielt...
    Doch die fehler:

    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_close@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_real_connect@32" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_init@4" in Funktion "_main".
    

    sind immer geblieben...

    Ich weiß auch nicht, wo oder womit diese aufgerufen werden, weil in meinem code habe ich sie ja nicht verwendet. Weiß jemand was darüber, oder kann mir hinweise nennen wie man da am besten weitermacht?

    Hier einmal mein gesamtes werk:

    /*Verbindung zu MySQL Server aufnehmen*/
    #include "cmysql.h"
    #include <mysql/mysql.h>
    #include <stdio.h>
    #include <iostream>
    #include <cstdlib>
    #include <string>
    int main(void)
    {
    	//Variablendeklaration
    	const char *sqlcon[5];
    	unsigned int port[1], flag[1];
    
    		//MySQL Anmeldeinformationen
    		sqlcon[0]	= "192.168.178.119";// Host-Name
    		sqlcon[1]	= "username";	// User-Name
    		sqlcon[2]	= "passwort";	// Passwort fuer username
    		sqlcon[3]	= "datenbank";	// Name der Datenbank
    		port[0]		= 0;	        // Port (default=0)
    		sqlcon[4]	= "NULL";	// Socket (default=NULL)
    		flag[0]		= 0;		// Flags
    
    	//my initialisieren	
    	MYSQL *my;
    	MYSQL *link;
    	my = mysql_init(NULL);
    
    	//Verbindung aufbauen
    	link = mysql_real_connect (my,sqlcon[0], sqlcon[1], sqlcon[2], sqlcon[3], port[0], sqlcon[4], flag[0]);
    	if (link == NULL)  
    	{ 
    		//Verbindung fehlgeschlagen
            printf("Keine Verbindung zur Datenbank hergestellt");
    	}
    	else 
    	{ 
    		//Verbindung Erfolgreich
    		printf("Verbindung hergestellt!");
    	}
    
    	//Verbindung Trennen
        mysql_close(link); 
    }
    

    Dies sind nochmal alle Fehlermeldungen, die ausgeworfen werden

    1>------ Erstellen gestartet: Projekt: MyDatabase, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>main.cpp
    1>Verknüpfen...
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_close@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_real_connect@32" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_init@4" in Funktion "_main".
    1>C:\Users\Dito\Documents\Visual Studio 2008\Projects\MyDatabase\Debug\MyDatabase.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.
    1>Das Buildprotokoll wurde unter "file://c:\Users\Dito\Documents\Visual Studio 2008\Projects\MyDatabase\MyDatabase\Debug\BuildLog.htm" gespeichert.
    1>MyDatabase - 4 Fehler, 1 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    @EOP:
    Das ist nicht so das was ich mir am ende einmal vorstelle... Wenn alles klappt wie ich mir das vorstelle, soll es am ende einmal die website geben, wo der User seinen Hash benutzen kann. Oder der andere User benutzt eine der Anwendungen, wo eine von denen als quasi frontend dient. Das finde ich sauberer und effizienter für den regelmäßigen gebrauch.
    Edit:
    Ich bin nun mehr oder weniger fündig geworden...
    und zwar wird hier: http://www.tutorials.de/c-c/222728-mysql-und-dev-c.html
    über das selbe problem diskutiert...

    ach stimmt da war doch was
    jetzt fällt es mir wieder ein diese libmysql.dll muss man da ja einfügen *g
    nur wo war das nochmal

    dies habe auch ich nicht getan, eine solche date habe ich nur im programmverzeichniss vonm mysql workbench... das kann sie ja nicht sein oder, hätte sie eher im mysql c++ connector verzeichniss vermutet... ????

    Aber egal, falls dies der schlüssel zur lölsung des problems sein sollte, wie füge ich die bibliothek an mein projekt an?
    Ich benutze Visual Studio 2008...

    Danke und Gruß
    cpi



  • Damit findest du diverse solche Dienste:

    http://www.google.com/search?name=f&hl=en&q=online+hash+decrypt



  • Moin

    Die DLL an sich kannst du nicht mal eben so einbinden. es gibt auf der MySQL Seite eine Gute erklärung dazu. Meines Wissens nach sogar mit Schritt für Schritt Anleitung für Visual Studio. Die Fehler kommen daher, weil der Linker diese Symbole nicht kennt. du musst die nötige Lib hinzulkinken. in dem mysqlc++ connector Verzeichniss müsste eine .lib Datei sein. die musst du in den Projekteinstellungen unter Linkeroptionen hinzufügen.

    PNoob



  • cpi schrieb:

    @hustbear:
    Ich bin mir ziemlich sicher, das ich dies verstanden habe. Entschuldiege bitte das ich den Begriff "Rainbowtable" benutzt habe, eigentlich sollte es eher heißen Hash Datenbank, da dies treffender wäre.

    Das heisst du weisst wie ein Rainbow-Table funktioniert, hast aber eine einfache Datenbank statt dessen implementiert? OK.

    Dann die Frage: wieso nimmst du nicht Rainbow-Tables?



  • Ich glaube ich suche meine alte Datenbank auch mal raus die importiere ich dann in meinen aktuellen MySQL Server(den könnte ich im Übrigen für das Projekt zur verfügung stellen. War mal für meine Webseite geadcht, die ist aber inzwischen auf einen Webhoster umgezogen) importieren. Dann gucke ich mal welche von den knapp 90.000 Einträgen bei dir noch nicht eingetragen sind.

    PNoob



  • @hustbaer:

    cpi schrieb:

    @EOP:
    Das ist nicht so das was ich mir am ende einmal vorstelle... Wenn alles klappt wie ich mir das vorstelle, soll es am ende einmal die website geben, wo der User seinen Hash benutzen kann. Oder der andere User benutzt eine der Anwendungen, wo eine von denen als quasi frontend dient. Das finde ich sauberer und effizienter für den regelmäßigen gebrauch.

    Außerdem mag ich datenbanken (bzw sehe viele vorteile in ihnen), seitdem ich mit java viele kleine spielerrein gemacht habe weil es so einfach war.
    Klar ist eine Rainbowtable mit entsprechenden tools eine schnelle und gute lösung, doch ich finde deren größen unhaltbar... Ich habe alleine schon md5 tables gesehen mit mehr als 2 TB... Wo soll ich die den hinpacken? und wenn jetzt ich und z.b. mein Kumpel einmal drauf zugreifen wollten müssten wir entweder 4 TB speicherplatz verschwenden, oder wir haben gleich alles zentral und können auch noch anderen den Zugang dazu gewähren. Auserdem wüsst ich nicht wie lange ich für 2 TB daten zum downloaden brauche, und meines wissens nach sind die auch nicht so einfach zu editieren bzw ergänzen. (Lasse mich gerne eines besseren belehren)

    @PNoop:
    Das finde ich eine tolle Idee, und die Unterstützung finde ich gut 😉
    Dann ist die Datenbank gleich mal etwas größer 😉

    //Weiter zum Problem

    Übrigends habe ich das Problem trotz Includirter libmysql.dll nicht behoben bekommen. Habe sie fein säuberlich in ein eigenes verzeichnis gestopft und über
    Projekt Eigenschaften -> Linker -> Zusätzliche Bibliotheken -> Pfad
    bekannt gemacht.

    Ist das der richtige weg gewesen die dll dem Linker bekannt zu machen?
    da er ja

    error LNK2019
    

    auswirft habe ich mal auf den linker geschlossen.

    cpi schrieb:

    Dies sind nochmal alle Fehlermeldungen, die ausgeworfen werden

    1>------ Erstellen gestartet: Projekt: MyDatabase, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>main.cpp
    1>Verknüpfen...
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_close@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_real_connect@32" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_init@4" in Funktion "_main".
    1>C:\Users\Dito\Documents\Visual Studio 2008\Projects\MyDatabase\Debug\MyDatabase.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.
    1>Das Buildprotokoll wurde unter "file://c:\Users\Dito\Documents\Visual Studio 2008\Projects\MyDatabase\MyDatabase\Debug\BuildLog.htm" gespeichert.
    1>MyDatabase - 4 Fehler, 1 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Er kennt aber "angeblich" die Sachen noch immer nicht kennt. Hmm... Kompliziert...

    Ich muss mich morgen auf nach der Arbeit nochmal genauer damit auseinander setzen.

    Aber ich habe auf der Arbeit mal schnell im Internet ein wenig recherchiert und etwas über curl überflogen. Damit könnte man über Umwege das auch machen, falls das gar nicht klappt oder? Denn da kann ich Parameter ja direkt ins php geben was dann weiterarbeitet.
    Muss man nur noch auslesen.
    (Jedenfalls habe ich das so beim überfliegen verstanden)

    Aber das möchte ich nur machen wenn das gar nicht direkt geht.

    Ich hoffe Ihr könnt mir noch einen kleinen Tipp bezüglich

    Danke und einen Schönen Abend noch,
    cpi



  • @cpi:
    Ein Rainbow-Rable ist im Prinzip auch eine Datenbank, nur dass man die nötige Grösse um eine bestimmte Gruppe Passwörter (Länge/Zeichensatz) abzudecken um Faktor 100, 1000, 10000, 100000 reduzieren kann.
    Es spricht auch nichts dagegen ein Web-Frontend zu basteln welches den Lookup durchführt.

    Was bringt mir eine Datenbank in der ich nichtmal ein Wort aus 4 Kleinbuchstaben nachgucken kann, weil es einfach nicht drinnen ist (bzw. die Chancen dass es drinnen ist sehr klein sind)?



  • Die DLL Solltest du nicht hinzufügen. da müsste eine Lib bei dein, die musst du hinzulinken. Du Arbeitest mit Visual Studio? wenn ja, dann gucke ich nacher mal. das downloadet gerade bei mir. kannst du vielciht den Code mal zur verfügung stellen? dann wäre das testen besser.

    PNoob



  • Moin

    Also ich habe jetzt eine verbindung zur Datenbank. nur leider scheitert aus unnbekanntem Grund die Abfrage. ansonsten ist Programm B fertig.

    wegen des Vergleichs mit deiner Datenbank, ist der MySQL Server von Aussen zu erreichen, so das ich da abfragen ausführen könnte? weil alle einzelnt übers php interface ist zu Mühsam.

    PNoob



  • Statusupdate: Die Abfragen gehen jetzt. Also es kann zu einem bestimmtem Has das Passwort aus der Datenbank ausgelesen werden.



  • Ohh, das freut mich ja, kannst du mir verraten wie du es geschafft hast?

    Ja mein Server sollte von aussen erreichbar sein soll ich dir mal die zugangsdaten geben?

    Gruß
    cpi

    Edit:
    @PNoop:
    Wo hast du eigentlich die .lib datei her (welche nimmst du?) ? ich konnte die bei mir auf dem system nicht finden... Und bei google habe ich nur die .dll datei gefunden...



  • Den Sourcecode kann ich dir gerne nachher zur Verfügung stellen, bin gerade am falschem PC.

    Ja die Zugangsdaten wären gut. könntest du mir die an meine E-mail Adresse schicken.

    Ich habe mir das Paket MySQL C API(LIBMYSQL) heruntergeladen und da ist ein Verzeichnis mit den includes und eines, da sind die .lib Dateien drin.

    Meine Datenbank ist in der Zwischenzeit gewachsen. es sind jetzt sämtliche Passwort kombinationen der Zeichen "abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" eingetragen.

    PNoob



  • PNoob schrieb:

    Meine Datenbank ist in der Zwischenzeit gewachsen. es sind jetzt sämtliche Passwort kombinationen der Zeichen "abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" eingetragen.

    Das ist gut. Hätte anfangs nicht gedacht, daß das auf eine endliche Platte paßt.


Log in to reply