![]() |
In den Resourcen steht die dfm also auch Passwörter?
Hallo,
In Delphi werden die dfm Dateien ja als Resource in eine Exe eingebunden. Aber wie steht es mit der Sicherheit? Man könnte doch einfach mit ResourceHacker die Datei untersuchen und dann z.B. Passwörter, die in Komponenten eingegeben wurden, auslesen? Gibt es dagegen keinen Schutz? |
Re: In den Resourcen steht die dfm also auch Passwörter?
Verschlüsselung?
|
Re: In den Resourcen steht die dfm also auch Passwörter?
Gibts irgendeine Einstellung in Delphi mit der man das erreichen kann?
|
Re: In den Resourcen steht die dfm also auch Passwörter?
Hallo,
sämtliche Passwörter, die du in die Exe integrierst, sei es mit Delphi, C++ oder anderen Programmen, kann man auslesen, wenn man weiß wie. Manchmal reicht es dafür, die Exe mit einem Hex-Editor zu öffnen, manchmal ist die Überwachung des RAMs oder ein Disassemblieren erforderlich. Hundertprozentige Sicherheit gibt es da nicht, da deine Exe das Passwort im Klartext kennt. Und wenn es verschlüsselt wäre und die Exe das Passwort selbst entschlüsseln kann, dann bringt das genauso wenig (das Passwort steht nach dem Entschlüsseln bsp. im Klartext im RAM). Worum geht es dir denn genau? Vielleicht lässt sich das Problem anders lösen. Statt bsp. FTP-Zugangsdaten in die Exe zu integrieren, könnte sich das Einrichten eines separaten FTP-Users mit entsprechenden Rechten (ohne Passwort) anbieten. Oder der Weg über PHP. Dann wären die Zugangsdaten in PHP-Dateien hinterlegt, die keiner auslesen kann und PHP sorgt für die Übertragung der Daten. Grüße, Matze |
Re: In den Resourcen steht die dfm also auch Passwörter?
Naja es hat mich einfach nur mal interessiert. Wahrscheinlich werde ich in Zukunft den Komponenten die Passwörter im Quellcode zuweisen. Ich meine es ist immernoch einfacher mit ResourceHacker die dfm zu durchsuchen als z.B. mit Cheat Engine den Speicher zu scannen.
Vielen Dank für eure Antworten. |
Re: In den Resourcen steht die dfm also auch Passwörter?
Moin,
Zitat:
Da reicht Notepad. |
Re: In den Resourcen steht die dfm also auch Passwörter?
Hi!
Zitat:
Vllt. wären one-way-Verschlüsselungen (z.B. MD5) was für dich? Grüße, Frederic |
Re: In den Resourcen steht die dfm also auch Passwörter?
Hallo,
Zitat:
deswegen der Spruch mit dem ResourceHacker. Wie schon richtig gesagt, hilft da nur Verschlüsselung. Heiko |
Re: In den Resourcen steht die dfm also auch Passwörter?
Zitat:
Sonst kann man das Entschlüsselte doch ebenfalls problemlos auslesen, wie ich bereits geschrieben habe, oder nicht? Ich bin der Meinung, dass man in dem Fall natürlich versuchen kann, das Passwort zu verstecken, aber wirklich verhindern lässt sich das Auslesen nicht, wenn das Passwort in die Exe integriert ist. Grüße, Matze Edit: Das von Frederic angesprochene Hash-Verfahren ist natürlich was anderes. Da hat man jedoch das Passwort nie zur Verfügung, lediglich einen Hash, mit dem man einen anderen Hash bsp. vergleichen kann. |
Re: In den Resourcen steht die dfm also auch Passwörter?
Hallo,
Zitat:
weil das Passwort ausgelesen werden kann ? Heiko |
Re: In den Resourcen steht die dfm also auch Passwörter?
Zitat:
Vorteile: - kann nicht einfach so ausgelesen werden - Änderungen bei den Zugangsdaten erfordern keine neue Compilierung Für die Speicherung der Werte habe ich mich ein wenig von der Firma LANCOM inspirieren lassen. In den Config-Dateien (sind ini-Dateien) werden die Passwörter auch verschlüsselt gespeichert. Es ist aber auch möglich, das Passwort in der Config-Datei im Klartext zu schreiben. Beim ersten Zugriff auf die Config-Datei wird der Wert dann aber automatisch verschlüsselt. Die Erkennung, ob der jeweilige Eintrag verschlüsselt ist, erfolgt über ein doppeltes = Zeichen Unverschlüsselt
Code:
Verschlüsselt
[Section]
Ident1=Geheim
Code:
Das ist keine Hochsicherheitslösung, weil ja alle Teile zum Ver- und Entschlüsseln vorliegen, reicht aber
[Section]
Ident1==ft6tz7 um solche Kennwörter vor neugierigen Benutzern zu verstecken :mrgreen: |
Re: In den Resourcen steht die dfm also auch Passwörter?
Zitat:
ehrlich gesagt, ich verstehe das ganze Problem nicht - Passwörter haben doch in der Exe nichts verloren, und auch nicht im Quelltext, schliesslich müssen sie ja nicht nur geheim, sondern auch leicht änderbar sein. Was machst du denn, wenn du 10 Kunden hast, deren Datenbank-Admin monatlichen Passwortwechsel vorschreibt: 120 mal im Jahr eine neue Exe versenden? Und in 99 % der Fälle kannst/darfst du das Passwort doch überhaupt nicht wissen? Irgendwie muss das ein Anwendungsfall sein, der mir noch nie begegnet ist, bitte um Aufklärung. Gruss Reinhard |
Re: In den Resourcen steht die dfm also auch Passwörter?
Zitat:
Oder das angesprochene Hashing: Da ist der Hash bekannt und beim Einloggen eines Benutzers wird aus dessen Kennwort der Hash generiert und mit dem vorliegenden Hash verglichen. Wobei das nur eine Einweg-Verschlüsselung ist. Wenn die Exe aber selbst in der Lage ist, die verschlüsselten Dateien zu entschlüsseln, dann bin ich der Meinung, dass das unsicher ist. Wo sollte denn da die Sicherheit liegen? Die Exe kennt das Kennwort und spätestens wenn sie was entschlüsselt, wird das Entschlüsselte irgendwo abgelegt, wo man es auslesen kann. Wenn du mir das vernünftig begründen kannst, glaube ich es evtl. sonst nicht. Aber wie Reinhard angesprochen hat und ich auch weiter oben, wäre es interessant zu wissen, worum es hier genau geht. Oft gibt es andere, bessere Lösungen, wenn man etwas wirklich sicher machen möchte. Geht es nur ums Erschweren zum Auslesen von Dingen, dann ist das so in Ordnung. |
Re: In den Resourcen steht die dfm also auch Passwörter?
@Sir Rufo: Das ist sogar noch etwas unsicherer.
Wenn der geheime Text (hier dein Passwort) in der EXE steht, dann muß man es dort ertstmal suchen und dann noch entschlüsseln. Wenn es aber in einer kleineren externen Datei steckt, dann hat man den Text schonmal und muß nur noch rausfinden, wie er verschlüsselt ist. Wie schon gesagt wurde: gegen unerfahrenere Hacker und vollkommen unwissende hilft es schon, wenn die Daten irgendwo (in EXE, INI oder sonstwo) irgendwie verschlüsselt rumliegen, selbst wenn die EXE weiß, wie man es entschlüsselt. Sobald es sicherer sein soll, dann muß irgendetwas davon ... z.B. das Paswort der Entschlüsselung, das Entschlüsselungsverfahren ... weit weg von dem Benutzer, in einer "sicheren" Umgebung (z.B. auf dem eigenem Server) liegen und auch noch der Übertragungsweg muß sicher sein. Wenn der böse Bube aber an alles rankommt (verschlüsselte Daten, Passwort und Entschlüsselungsverfahren), dann kann er sich die Daten selber entschlüsseln ... ebenso muß dan sichergestellt werden, daß er auch nicht wichtige Daten irgendwo/irgendwann im Klartext auslesen kann. |
Re: In den Resourcen steht die dfm also auch Passwörter?
Zitat:
Es gibt aber Situationen, wo ein solches Verfahren unumgänglich ist, ohne den Benutzer unnötig zu gängeln. Natürlich sollte man sich immer überlegen, welches Loch man sich im Fall der Fälle damit reißt. Bei einer geschlossenen und überschaubaren Menge an Benutzern (firmenintern), wo Daten auf einem internen ftp-Server hochgeladen werden sollen, der ftp-User nur Berechtigungen (aber halt schreibend) für ein Austausch-Verzeichnis hat, ist dieses Verfahren aber m.E. durchaus zulässig. |
Re: In den Resourcen steht die dfm also auch Passwörter?
Folgende kleine Verschleierungstaktik sollte ausreichen um Spielkinder fernzuhalten:
Delphi-Quellcode:
function TForm1.GetPasswort:string;
const c5:char = 'i'; muell1:char = '@'; c2:char = 'e'; muell2:char = #2; muell3:char = #210; c1:char = 'g'; muell4:char = #13; c3:char = 'h'; muell5:char = '0'; c4:char = 'e'; c6:char = 'm'; begin result := c1+c2+c3+c4+c5+c6; end; |
Re: In den Resourcen steht die dfm also auch Passwörter?
Den "Müll" kannst'e weglassen, da er nirgends verwendet und demnach eh nicht einkompiliert wird.
|
Re: In den Resourcen steht die dfm also auch Passwörter?
Hi!
Funktioniert eine solche Verschleierungstaktik wirklich? Ich hätte gedacht, dass der Compiler solche Scherze gleich wegoptimiert? Grüße, Frederic |
Re: In den Resourcen steht die dfm also auch Passwörter?
theoretisch optimiert er es weg
bei echten Konstanten kürzt der Compiler es zusammen
Delphi-Quellcode:
und macht das draus.
function TForm1.GetPasswort:string;
const c5 = 'i'; c2 = 'e'; c1 = 'g'; c3 = 'h'; c4 = 'e'; c6 = 'm'; begin result := c1+c2+c3+c4+c5+c6; end;
Delphi-Quellcode:
Aber typisierte Konstanten sind eher mit Variablen zu vergleichen und bei Variablen kann nicht gekürzt werden
function TForm1.GetPasswort:string;
begin result := 'geheim'; end;
Delphi-Quellcode:
function TForm1.GetPasswort:string;
const c5:char = 'i'; c2:char = 'e'; c1:char = 'g'; c3:char = 'h'; c4:char = 'e'; c6:char = 'm'; begin result := c1+c2+c3+c4+c5+c6; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz