Passwort in *.exe für DB Zugriff



  • Hallo Leutz,

    ich bin am Ende.

    Ich habe eine Datenbank - Anwendung geschrieben. Die DB ist eine Access DB, weil max. 30 MB an Daten zu erwarten sind.

    Nun nachdem alles so funktionierte, hatte ich mal aus Neugierde einen Hexeditor zur Hand genommen und mal meinen Quellecode des Clients überprüft. Dort stand das Passwort im Klartext zur *.mdb drinn (also nicht mal dissambler ect).

    Ich hatte daraufhin die Datenbank verschlüsselt, komprimiert (passwortgeschützt war sie ja sowieso).

    Nun kam mir noch die Idee, ein verschlüsseltes Passwort in den Code aufzunehmen, was erst zur Laufzeit entschlüsselt wird und damit die DB zu kontaktieren.

    Ich hatte die Idee auch in mein Forum gepostet und dort wurde mir gleich klar gemacht, dass es kein Problem wäre, dass Passwort zur DB rauszubekommen.

    Also schrieb ich ein Testprogramm, was ein bereits mit blowfish generiertes Passwort im Code enthielt.
    Bsp.

    TKey128 Key128; 
    GenerateLMDKey(Key128, sizeof(Key128), 17498741985178945784595111); 
    AnsiString decrypt = BFEncryptStringCBCEx("vyo4J8gUhR8kNzERPy4bQeZxOTGQS7NaPl5ZpÜüihîlûküadE=", Key128, false); 
    AnsiString connect = "Provider=MSDASQL.1;Password="+decrypt+";Persist Security Info=True;Data Source=db_Master"; 
    dbzugriff->ADOConnection1->ConnectionString = connect;
    

    Wer also im edit Feld den richtigen Code eingibt, bekommt ein Image zu sehen usw.
    Hier sind alle Details enthalten http://board.cck-group.info/ftopic201.html
    Fakt ist, das Kennwort wurde schnell geknackt.
    Meine Frage ist eigentlich, was kann ich denn nun tun, um meine Datenbank zu schützen?

    Ich nutze den Borland C++ Builder Professionell

    greetz
    MX



  • Für eine Access-DB braucht "Advanced Office XP Password Recovery" weniger als 1 Sekunde, somit nützt das Verschlüsseln im Programm nichts. Was ist denn so geheim an der Datenbank? Wenn die DB so stark geschützt werden muss, würde ich eine andere DB empfehlen.

    Gruß Nighthero



  • Nighthero schrieb:

    Für eine Access-DB braucht "Advanced Office XP Password Recovery" weniger als 1 Sekunde, ...............
    Gruß Nighthero

    Darum geht es ja im o.g. Beispiel nur indirekt. Im richtigen Projekt ist es eine Access DB aber in dem test war es nur eine einfache Anwendung, in der ein mit Blowfish verschlüsseltes Password integriert war.

    Es spielt doch keine Rolle mit welcher Datenbank sich ein Client verbindet! Wenn das Passwort schon vom Clienten her in kurzer Zeit geknackt wird, dann hat der Angreifer ein Datenbankkennwort. Eine DB Anwendung benötigt nun mal ein Kennwort um sich mit einer Datenbank zu verbinden (wenn erforderlich!).

    Es kann doch nicht sein, dass man mit paar Tricks und dissambler Tools sämtliche Passwörter in Null komma nix rausfindet...

    Und das hat doch mit einer Access Datenbank überhaupt nichts zu tun!

    ok, merke schon das bringt nichts weiter ... Advanced Office XP Password Recovery ich habe auch den ERD Commander ... als wenn das eine Antwort auf ein Problem wär.

    cya
    MX



  • ist denn der aufwand den du hier betreiben willst auch gerechtfertigt? für nen ottonormalverbraucher ist ein passwort nicht knackbar der weiss in den meisten fällen nicht mal wie er die db konfigurieren muss, geschweige denn, wie er das passwort knackt.



  • Wenn's dich stört, dass man das Passwort auslesen kann, dann mach doch einfach ne Eingabe. Schon hast du das Problem nicht mehr, ausserdem kannst du so das Passwort auch später noch verändern.
    Ich halte nichts davon solche "wichtigen" Sachen im Code zu verankern.

    Ach ja du könntest natürlich auch ein verschlüsseltes Passwort in eine Datei legen, das dann ausgelesen werden muss. Das kann man aber wieder mit Programmen wie FileMon verfolgen.


Anmelden zum Antworten