Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hashproblem (https://www.delphipraxis.net/35995-hashproblem.html)

shmia 14. Dez 2004 15:28

Re: Hashproblem
 
Die Funktion MD5File(N: string) erzeugt blöderweise keine Exception, wenn die Datei nicht
geöffnet werden konnte und liefert dann immer den Hashwert eines Leerstrings zurück. :wall:
Deshalb:
Delphi-Quellcode:
function MD5File(N: string): MD5Digest;
var
   FileHandle: THandle;
   MapHandle: THandle;
   ViewPointer: pointer;
   Context: MD5Context;
begin
   MD5Init(Context);
   FileHandle := CreateFile(pChar(N), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
      nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0);
   if FileHandle <> INVALID_HANDLE_VALUE then
      raise EReadError.CreateFmt('Can''t open file <%s>', [N]);

Tonic1024 14. Dez 2004 15:29

Re: Hashproblem
 
du kannst doch wenn du den Key hast jederzeit wieder den hashwert dazu ermitteln, und die Beiden vergleichen.

Das kannst du in einer Datenbank (oder sonstwie) speichern, oder halt zur Laufzeit immerwieder ermitteln...

Die Muhkuh 14. Dez 2004 15:30

Re: Hashproblem
 
Hi,

der HashWert ist immer einmalig. "Hallo" ergibt einen anderen wert wie "hallo". Es kommt also auch auf Groß/Kleinschreibung an.

freak4fun 14. Dez 2004 15:34

Re: Hashproblem
 
Hm...
ich schicke Name und Key an die H.dll und will ein richtig oder falsch zurückbekommen. Das heisst auf deutsch das es Sinnlos ist. Weil dan irgendein Cracker meine H.dll erstzt und dann ist alles hin. Aber irgendwie muss ich doch nen Schutz erreichen?!

mfg
freak

Tonic1024 14. Dez 2004 16:06

Re: Hashproblem
 
Äehm...


Einen gewissen Schutz erreichst du nur, wenn du beim Programmstart jedes mal prüfst, ob dein programm noch auf dem Rechner Läuft, auf dem du es installiert/registriert hast.

Eine 100% Schutz gibte es nicht. Aber man kann allen Kiddies und Noobs das Leben schon schwer machen, indem du dir solche schweinereien ausdenkst. Die Geschichte mit dem Hash ist ne feine Sache, wenn man Passwörter oder sowas "verschlüsselt" speichern will.

Die Geschichte Mit der DLL würde ich kippen... Braucht nur jemand ne DLL hinstellen, die immer - was auch kommt - True ausgibt und fertig...

Delphi-Quellcode:
  function sowiso(Bla, Blaa, Blaaa: irgendwas):Boolean;
  begin
    result:=true;
  end;
du könntest einen Key (einen 32 Stelligen Hash) in der Registry ablegen, der den Computernamen (schlechtes Beispiel - irgendwas halt) enthält. Wenn noch kein Eintrag existiert, wird der CD-Key (aufbewahren!!) abgefragt, der liesst etwas persönliches aus dem Computer aus, erstellt einen Hash davon und speichert den weg. Jedesmal wenn dein Programm startet, könnte dieser hash nochmal ermittelt werden und mit dem alten aus der registry verglichen.

In die registry darfst du natürlich nur einmal schreiben. Nämlich dann, wenn der CD-Key richtig eingegeben wurde.

Wenn nun der Hash nicht übereinstimmt kannst du A) den user auffordern einen neuen Key anzufordern (Gültigkeit festlegen) oder schlicht nochmal neu eingeben...

Aber das ist nur eine Möglichkeit. Deiner Phantasie sind da keine grenzen gesetzt. Und wie gesagt 100% sicher gibts nicht und 99% nur mit enormen Aufwand.


MfG

Tonic

freak4fun 14. Dez 2004 16:11

Re: Hashproblem
 
Dankeschön.

Also ich hab ja das mit der .dll auch gemacht weil ioch mal was mit .dll's machen wollte. Ich würde ja auch nicht nur flase oder true hin und herschicken. ;)

### Ich überleg mir was feines. ###

mfg
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz