Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi funktionierende Unit die Hardware-IDs berechnet (https://www.delphipraxis.net/143829-funktionierende-unit-die-hardware-ids-berechnet.html)

Hedge 24. Nov 2009 11:16


funktionierende Unit die Hardware-IDs berechnet
 
In der Code-Library gibt es ja hier eine Unit die genau das macht.
Leider berechnet sie alternierend jeweils 2 verschiedene Hardware-IDs für den selben PC was sie ziemlich sinnlos macht.

Kennt Jemand noch andere Freeware-Komponenten oder Units die das machen?
Bitte nur keine .dll-Dateien.

Ich möchte mit der Hardware-ID kein Sicherheitssystem basteln sondern nutze diese nur für heuristische Analysen nachdem sie auf meinen Server übertragen wurden.

Hedge 25. Nov 2009 18:34

Re: funktionierende Unit die Hardware-IDs berechnet
 
Bump!

Hat da echt Niemand eine Backmischung parat?

BUG 25. Nov 2009 18:48

Re: funktionierende Unit die Hardware-IDs berechnet
 
Versuche mal dir die Eigenschaften mal vor dem Hashen ausgeben zu lassen, dann sollte man sehen was da herumwackelt :stupid:
Das könntest du dann einfach weglassen.

Aber wenn es dir nicht so um Sicherheit geht, würde so etwas, wie eine bei der Installation bzw. einmalig zufällig gewählte GUID vielleicht auch ausreichen?


MfG,
Bug

Hedge 25. Nov 2009 18:50

Re: funktionierende Unit die Hardware-IDs berechnet
 
Wenn sich die GUID nur hardwarebezogen ändert, dann wäre das durchaus passabel.

gsh 25. Nov 2009 19:00

Re: funktionierende Unit die Hardware-IDs berechnet
 
Hab das Problem bei der Unit gefunden und das ohne Debugger :)
Tritt nur bei Computern mit mehr als einer CPU auf.
Bindet mal das Programm per Taskmanager immer auf den einen Core => Dann kommt immer der erste Key.
Dann einmal auf den anderen Core binden => Es kommt immer der zweite Key generiert.

Warum der Key also spontan wechselt ist leicht erklärt. Windows lässt den Code mal in Core 1 und mal in Core 2 laufen je nachdem welcher gerade weniger belastet ist.

Also entweder du überarbeitest die Unit damit immer die gleiche CPUID erzeugt wird oder du nimmst das bei der Berechnung einfach raus.

Neutral General 25. Nov 2009 19:01

Re: funktionierende Unit die Hardware-IDs berechnet
 
Könnte man nicht jeweils alle CPUs des Computers in den Hash reinbauen? Wäre evtl die beste Methode.

BUG 25. Nov 2009 19:24

Re: funktionierende Unit die Hardware-IDs berechnet
 
Ich habe den wackelnden Code- Teil gefunden (erster Block in gethardwareid):
Delphi-Quellcode:
var a,b,c,d : Longword;
//...
  try
      asm
        mov eax,1 // eax registeri cpuid komutunun parametresidir
        db $0F, $A2 // cpuid komutu
        mov a,EAX
        mov b,EBX
        mov c,ECX
        mov d,EDX
      end;
      CPUID:=inttohex(a,8) + '-' + inttohex(b,8) + '-' + inttohex(c,8) + '-' + inttohex(d,8);
   except
      CPUID:='0000-D342-F921-M068';
   end;
Aber auch den Aufruf von getCPUSpeed() würde ich mir sparen: dieser Wert wird nicht weiter verwendet, aber innerhalb der Funktion 2x Sleep ausgeführt.


MfG,
Bug

Hedge 25. Nov 2009 19:32

Re: funktionierende Unit die Hardware-IDs berechnet
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich hwiddemo mit Delphi 2009 kompiliere und mittels gethardwareid mir eine ID generieren lasse, dann führt das zu einer Debugger-Exception (siehe Anhang).

Weiß Jemand woran das liegen könnte?

gsh 25. Nov 2009 19:57

Re: funktionierende Unit die Hardware-IDs berechnet
 
Schon mal mit F8 durch die Unit debuggt?

Hedge 25. Nov 2009 20:05

Re: funktionierende Unit die Hardware-IDs berechnet
 
Die Funktion MD5Print scheint der Bösewicht zu sein:
Delphi-Quellcode:
function MD5Print(D: MD5Digest): string;
var
   I: byte;
const
   Digits: array[0..15] of char =
      ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
begin
   Result := '';
   for I := 0 to 15 do Result := Result + Digits[(D[I] shr 4) and $0f] + Digits[D[I] and $0f];
end;
Nach der result-Zeile geht es in die Binsen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.

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