Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Passwortschutz (https://www.delphipraxis.net/39303-passwortschutz.html)

malo 2. Feb 2005 14:31

Re: Passwortschutz
 
Zitat:

das passwort nciht an einem stück in der exe speichert.
Doch könnte man ja prinzipiell jedes Zeichen des Passworts verschlüsseln, einfach ein paar "sinnlose" Zeichen an den Anfang und ans Ende setzen, und dann vom Server aus nur das Zeichen an einer bestimmten Stelle auslesen. Ich glaube, das wird zumindest einen "Angreifer" verwirren. (jaja, ich weiß, ich hab bescheuerte Ideen ;) ).


Einen unknackbaren Schutz kann es wohl gar nicht geben, da man ja selbst noch wissen muss, wie man darauf zugreifen kann (bzw. das Programm muss es wissen). Und das kann ein "Angreifer" auch herausfinden. Die Kunst besteht wohl nur darin, es einem potentiellen Angreifer möglichst Schwer zu machen ;)

moritz 2. Feb 2005 14:35

Re: Passwortschutz
 
Zitat:

Zitat von tata1
Du kannst als erstes mal versuchen, die Daten zur Laufzeit in die Komponente zu geben.
Und zur Laufzeit kannst Du die ja per

Code:
passwort := 't' + 'e' + 's' + 't';
zusammenbauen.
Das sollte kurzfristig helfen.

Gruß
Jörn

Das hilft dir nicht weiter! Der Compiler setzt das zu einem 'test' zusammen. Genauso wenig hilft dir Komprimierung, weil man das auch wieder entpacken kann. Letztendlich gibt es keinen 100%igen Schutz, irgendwie wird man ihn knacken können.

Meflin 2. Feb 2005 14:36

Re: Passwortschutz
 
Zitat:

Zitat von moritz
Zitat:

Zitat von tata1
Du kannst als erstes mal versuchen, die Daten zur Laufzeit in die Komponente zu geben.
Und zur Laufzeit kannst Du die ja per

Code:
passwort := 't' + 'e' + 's' + 't';
zusammenbauen.
Das sollte kurzfristig helfen.

Gruß
Jörn

Das hilft dir nicht weiter! Der Compiler setzt das zu einem 'test' zusammen. Genauso wenig hilft dir Komprimierung, weil man das auch wieder entpacken kann. Letztendlich gibt es keinen 100%igen Schutz, irgendwie wird man ihn knacken können.

so vielleicht, aber nicht so:
Delphi-Quellcode:
pwchars := 'abcdefghijklmnopqrstuvwxyz';
IdWasAuchImmer.Password := pwchars[4] + pwchars[1]...
oder :?:

moritz 2. Feb 2005 14:40

Re: Passwortschutz
 
Zitat:

Zitat von Meflin
so vielleicht, aber nicht so:
Delphi-Quellcode:
pwchars := 'abcdefghijklmnopqrstuvwxyz';
IdWasAuchImmer.Password := pwchars[4] + pwchars[1]...
oder :?:

Da bin ich mir nicht sicher. Im Zweifelsfall: Ausprobieren!
Du könntest dir einen String bauen, der nur aus Sonderzeichen besteht, den mit einer for-schleife durchlaufen, und jeden Buchstaben des erstens in den zweiten String kopieren, dabei aber von seinem ASCII-Code i+30 abzeiehen.
Das ist nicht besonders aufwendig und toll, aber um einiges sicher, als den String so reinzuschreiben. Es gibt viele solche Methoden, die man auch verknüpfen kann. Man schaue sich nur mal die letzten Level der HackIt's an, die man - bwohl sier OpenSource sind, schwer knacken kann.

Gruß

Binärbaum 2. Feb 2005 15:04

Re: Passwortschutz
 
Also ich würde da wohl eine XOR-Verschlüsselung bemühen. Gegebenenfalls kann man den Schlüssel ja auch
noch verschlüsseln. Das ist auf alle Fälle sicherer, als zu irgendwelchen Sonderzeichen nur einen bestimmten Wert dazuzuaddieren (siehe Post von moritz).

MfG
Binärbaum

Meflin 2. Feb 2005 15:06

Re: Passwortschutz
 
Zitat:

Zitat von Binärbaum
Also ich würde da wohl eine XOR-Verschlüsselung bemühen. Gegebenenfalls kann man den Schlüssel ja auch
noch verschlüsseln. Das ist auf alle Fälle sicherer, als zu irgendwelchen Sonderzeichen nur einen bestimmten Wert dazuzuaddieren (siehe Post von moritz).

MfG
Binärbaum

ich kann mich nur wiederhohlen: solange die daten unverschlüsselt übertragen werden, ist das für den popo! der server entschlüsselt ja das passwort nicht, oder hab ich was verpasst?

tom1002 2. Feb 2005 15:46

Re: Passwortschutz
 
also ich hab das jetzt so gelöst

ini-datei
zeichensatz=abcdef....
ziffern.....

und daraus les ich dann die daten. FUNZT

DANKE FÜR ALLE ANTWORTEN

Igotcha 2. Feb 2005 16:09

Re: Passwortschutz
 
Du machst Dir da ein Problem, wo eigentlich keins sein sollte ;-)

In meinen Anwendungen stecke ich die DB-Zugangsdaten meist sogar in eine INI-Datei und die kann jeder lesen... kann er ja auch, denn der dort spezifizierte Datenbankuser hat

a) nur Zugriff auf die vom Programm benötigte Datenbank
b) nur die mindest-notwendigen Rechte auf den benötigten Tabellen

Sprich: Ein "Cracker" kann nichts anderes mit den Zugangsdaten machen, als der legitime User des Programms auch -> es ist gar kein Schutz notwendig.

Gruß Igotcha

P.S. Wenn Dein Anwendungs-DB-User natürlich User="root" und Password="" ist, dann würde ich da schnellstens etwas daran ändern ;-)

Elite 2. Feb 2005 16:45

Re: Passwortschutz
 
Auch wenn ich euch zustimme, dass eine Verschlüsselung der Daten ein falscher Ansatzpunkt ist, habe ich dennoch mal zwei Funktionen ausgegraben, die einen Text zumindest für Anfänger relativ unkenntlich machen. Das ist natürlich kein vergleich zu wirklichen Verschlüsselungsalgorythmen, aber vielleicht kannst du es ja gebrauchen, Tom:
Delphi-Quellcode:
// verschlüsseln
function Encrypt(text: string): string;
const
  adder = 30; // kann beliebig sein, ändert Erscheinungsbild d. verschlüsselt. Textes,
              // muss gleich dem adder in Decrypt sein
var
  loop, counter, key:Integer;
begin
  counter := 0;
  key := Length(Text) mod 10 + 5;
  for loop := 1 to length(text) do
  begin
    Inc(counter, key);
    if (ord(text[loop])+(adder+key+counter)) > 255 then
      result:=result + (chr(ord(text[loop])+(adder+key+counter)-255))
    else
      result:=result + (chr(ord(text[loop])+(adder+key+counter)));
    If Counter > 150 then
    Counter := 0;
  end;
end;


// entschlüsseln
function Decrypt(text: string):string;
const
  adder = 30;
var
  loop, counter, key: Integer;
begin
  counter := 0;
  key := Length(Text) mod 10 + 5;
  for loop := 1 to length(text) do
  begin
    Inc(counter, key);
    if (ord(text[loop])) <= (adder+key+counter) then
      result:=result + (chr(ord(text[loop])-adder-key-counter+255))
    else
      result:=result + (chr(ord(text[loop])-adder-key-counter));
    If Counter > 150 then
      Counter := 0;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.
Seite 3 von 3     123   

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