[Hash Datenbank] Interressierte und Helfer gesucht



  • 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.



  • Die Frage ist ja, bis zu welcher länge 😉
    Die passwörter sind maximal 5 Zeichen lang.

    PNoob



  • @PNoob:
    Nö, da ist gar keine Frage, "sämtliche Passwort kombinationen der Zeichen ..." heisst eben sämtliche, und nicht irgendwie eingeschränkt.

    BTW: das sind dann Pi*Daumen 1 Mrd. Einträge, richtig?

    Ein MD5 ist 16 Byte lang, Hex-Formatiert als 32 plus nochmal 5 für das Passwort selbst macht 37 Byte mal ca. 1 Mrd. macht 37 GB. Für 6 Zeichen wären es dann schon 2,3 TB, bei 7 dann bereits 142 TB.

    Klingt für mich jetzt nicht besonders sinnvoll...



  • ja das ist richtig. dürften so um die 1 Mrd einträge sein.

    Vieleicht sollte man sich eine etwas anderes Sytstem ausdenken.

    PNoob



  • Wenn dir ein neues anderes System einfällt wäre das natürlich sehr cool.
    Bis dahin würde ich wie ich glaube ich schon erwähnt habe Rainbow-Tables verwenden, da du mit denen den Speicherbedarf dramatisch reduzieren kannst.



  • 5stellen a 62 moeglichkeiten passen in 29.77 bit , ergo ist ein MD5 hier keine kompression (sprich datenverlust), sondern eine expansion. somit kann man fuer diesen fall eine hashtable nutzen die mit dem MD5 indiziert und die 30bit eintraegt. (also hash auf den MD5 und im array indizieren).

    296bit -> 30bit reduziert. 3.7GB 🙂

    wobei natuerlich rainbowtables der einzig skalierende weg sind.



  • So bin jetzt wieder zuhause, wäre ganz nett wenn du einen teil des quellcodes mal posten könntest, werde dir vieleicht heute noch eine e-mail mit den daten schreiben.

    Gruß cpi


Anmelden zum Antworten