[Hash Datenbank] Interressierte und Helfer gesucht



  • 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