Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 29.08.05 07:50 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 
 MOV EAX, [ESP]
 OR  byte ptr [OFFSET CodeBuf], AL
 MOV EAX, [EBP+EDI]            // Only interested in AL
 MOV byte ptr [EDX+OFFSET CodeBuf], AL  // <-- Hier meldet der Compiler "Inline Assembler Fehler"
 INC EDX
 JMP @Encode9


Das hier ist ein CodeAusschnitt aus nem Encrypter Descrypter und ist von einer CD mit 500 Delphi Tools
die ich bei eBay erworben habe! Ich will damit Passwörter verschlüßeln und entschlüßeln! Was kann
man da ändern damit's läuft?

Oder kennt Ihr eine andere Componente die Verschlüßeln und Entschlüßeln kann?
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 29.08.05 09:02 
Also wenn es um Passwörter verschlüsseln geht sollte man die Hashes (z.B. MD5) von den Passwörtern speichern und die dann vergleichen. Such mal im Forum, wurde schon oft genug diskutiert :)



MrSaint

EDIT: bei meinem D6Pro funktioniert die Assembler-Zeile übrigens! Was hast du für ein Delphi?

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 29.08.05 09:32 
user profile iconMrSaint hat folgendes geschrieben:
Also wenn es um Passwörter verschlüsseln geht sollte man die Hashes (z.B. MD5) von den Passwörtern speichern und die dann vergleichen. Such mal im Forum, wurde schon oft genug diskutiert :)



MrSaint

EDIT: bei meinem D6Pro funktioniert die Assembler-Zeile übrigens! Was hast du für ein Delphi?


Ja aber wie ich es verstanden habe kann man die nicht entschlüsseln und das brauche ich!
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 29.08.05 09:35 
Nein die kann man dann nicht mehr "entschlüsseln" und das ist normalerweise auch ganz gut so. Dann kann ein potenzieller Angreifer die Passwörter nicht entschlüsseln und muss per BruteForce versuchen das Passwort rauszubekommen und das kann ja bekanntlicher weise sehr lang dauern...

Warum musst du die Passwlrter wieder entschlüsseln?!?


MrSaint

EDIT: Buchstabendrher rausgemacht ;)

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 29.08.05 09:51 
user profile iconMrSaint hat folgendes geschrieben:
Nein die kann man dann nicht mehr "entschlüsseln" und das ist normalerweise auch ganz gut so. Dann kann ein potenzieller Angreifer die Passwörter nicht entschlüsseln und muss per BruteForce versuchen das Passwort rauszubekommen und das kann ja bekanntlicher weise sehr lang dauern...

Warum musst du die Passwlrter wieder entschlüsseln?!?


MrSaint

EDIT: Buchstabendrher rausgemacht ;)


Eine Anwendung in der man Gruppen einrichtet mit Passwörter und dann z.B. hat ein Benutzer das Passwort vergessen soll der Administrator nach eingabe
seines Passwortes das Passwort dieses Benutzers einsehen kann und dem mitteilen kann! Oder z.B. ich speichere das Passwort für den Zugriff
auf eine MySQL Datenbank und wenn ich es verschlüßele zum Speichern dann muß ich ja später entschlüsseln um auf die MySQL DB wieder mit dem
richtigen Passwort zugreifen zu können! Oder muß da zur DB die Transaktion dieser Passwörter auch verschlüßelt sein?
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 29.08.05 09:57 
Also der Sicherheit wegen würd ich das dann halt so machen, dass bei Vergessen des Passworts eben vom Admin ein neues Passwort gesetzt wird. Der Admin muss das natürlich können.. So wie's in den phpBBs auch gemacht wird! Ist meiner meinung nach die sicherste Möglichkeit, ansonsten geht man immer Gefahr, dass ein unbefugter "einfach" das Passwort entschlüsselt und schon hat er Zugriff..


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 29.08.05 10:16 
user profile iconMrSaint hat folgendes geschrieben:
Also der Sicherheit wegen würd ich das dann halt so machen, dass bei Vergessen des Passworts eben vom Admin ein neues Passwort gesetzt wird. Der Admin muss das natürlich können.. So wie's in den phpBBs auch gemacht wird! Ist meiner meinung nach die sicherste Möglichkeit, ansonsten geht man immer Gefahr, dass ein unbefugter "einfach" das Passwort entschlüsselt und schon hat er Zugriff..


MrSaint


Und was ist mit dem Passwort für den Zugriff auf die MySQL Datenbank? Ich verstehe ja also wenn seitens des Benutzers ein Passwort eingegeben
wird und es wird verschlüsselt und mit dem gespeicherten verglichen! Aber wie willst du das für den Zugriff auf die MySQL DB machen?
Also du must ja schon verschlüßeln zum Speichern und wenn du dann nicht entschlüsseln kannst, wie greifst du auf die MySQL DB mit dem richtigen
Passwort zu`?

Weil bei mir ist das PW für die Anwendung <> PW für die MySQL DB!
Wenn der Benutzer ja gleich das PW für die MySQL DB bekommt kann der auf anderem Wege außerhalb der Arbeitszeit auf die DB zugreifen und
unfug machen!
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 29.08.05 10:25 
ah, jetzt hab ich dich verstanden! :D Naja, in dem Fall würde wohl nur helfen, den User das Passwort für die MySQL DB eingeben zu lassen! Oder das MySQL-DB-Passwort dem User-Passwort gleichsetzen. Weil das Userpasswort gibt er ja klartext ein. Sollte das stimmen (nach ner Überprüfung mit dem irgendwo gespeicherten Hash) benutzt du dieses Passwort auch für die MySQL DB!



MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 29.08.05 10:35 
user profile iconMrSaint hat folgendes geschrieben:
ah, jetzt hab ich dich verstanden! :D Naja, in dem Fall würde wohl nur helfen, den User das Passwort für die MySQL DB eingeben zu lassen! Oder das MySQL-DB-Passwort dem User-Passwort gleichsetzen. Weil das Userpasswort gibt er ja klartext ein. Sollte das stimmen (nach ner Überprüfung mit dem irgendwo gespeicherten Hash) benutzt du dieses Passwort auch für die MySQL DB!



MrSaint


Verstanden? Und weiter geht's :D

Wenn aber z.B Benutzer aus Verschiedenen Abteilungen auf die eine DB zugreifen! Die einen in der Qualitätssicherung die anderen in der Personalabteilung usw. vieleicht ein blödes Beispiel da ja PA und QS nichts miteinander zu tun haben, verstehste,
die müßten ja nicht alle das gleiche Passwort haben! Du verstehst?
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 29.08.05 10:47 
Nee, ich meinte, dass du dann für jeden User (also wohl für jeden Mitarbeiter in der Firma) einen separaten User in MySQL anlegst. Und dieser User hat dann halt Zugriffsrechte je nach Abteilung und sein eigenes Passwort (das mit dem aus deinem Programm übereinstimmt).

BTW: du weißt schon dass wenn man MySQL kommerziell benutzen will, man da ne Lizenz kaufen muss? Musst mal genau nachschauen ob das auch so ist, wenn man es in der eigenen Firma benutzt, aber wenn man es mit seinem Programm dann verkauft kostet das! Außer ich hab das falsch in Erinnerung ;) Ich würd das aber zur Sicherheit mal checken!

MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Mo 29.08.05 10:49 
Also Benutzer-Anmeldenamen und Datenbanknamen gleich zu setzen halte ich für ungünstig, wie der OP bereits gesagt hat wäre es so jedem Mitarbeiter möglich, an der Anwendung vorbei auf die Datenbank zuzugreifen.

Für die Verschlüsselung gibt es verschiedene Algorithmen wie z.B. AES. Da müsste es auch Delphi-Units für geben, vllt. mal bei Torry oder google nach schaun.

_________________
Bravery calls my name in the sound of the wind in the night...
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 29.08.05 11:00 
user profile iconMrSaint hat folgendes geschrieben:
Nee, ich meinte, dass du dann für jeden User (also wohl für jeden Mitarbeiter in der Firma) einen separaten User in MySQL anlegst. Und dieser User hat dann halt Zugriffsrechte je nach Abteilung und sein eigenes Passwort (das mit dem aus deinem Programm übereinstimmt).

BTW: du weißt schon dass wenn man MySQL kommerziell benutzen will, man da ne Lizenz kaufen muss? Musst mal genau nachschauen ob das auch so ist, wenn man es in der eigenen Firma benutzt, aber wenn man es mit seinem Programm dann verkauft kostet das! Außer ich hab das falsch in Erinnerung ;) Ich würd das aber zur Sicherheit mal checken!

MrSaint


Nein meine Anwendung soll nur auf DB zugreifen! Was MySQL angeht hab ich dann nichts am Hut!