AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Computer ID und Verarbeitung
Thema durchsuchen
Ansicht
Themen-Optionen

Computer ID und Verarbeitung

Ein Thema von DelphiSecurity · begonnen am 5. Feb 2011 · letzter Beitrag vom 8. Feb 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DelphiSecurity
DelphiSecurity

Registriert seit: 10. Jan 2011
170 Beiträge
 
Delphi XE Architect
 
#1

Computer ID und Verarbeitung

  Alt 5. Feb 2011, 14:34
Hallo,

im Moment stehe ich vor einem Problem:

1.
Ich möchte gerne eine Computer ID auslesen. Keine Seriennummer von einer Festplatte.
In der Form: ####-####-####-#### (in der Art )
Wie zum Beispiel bei den MAGIX (R) Produkten

2.
Ich möchte noch im Zusammenhang mit eins zum Beispiel einen Bestimmnten Teil auslesen.
2541-5623-8868-6854 einzeln auslesen und Spiechern (= Speichern kann ich). Sollte auch mit Buchstaben gehen.

DANKE
(C) DelphiSecurity 2011 | Delphi XE
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#2

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 14:41
Ich möchte gerne eine Computer ID auslesen.
Sowas gibt es nicht.

Keine Seriennummer von einer Festplatte.
Doch, sowas wirst du machen müssen.

Man nimmt sich einige Eigenschaften ... Festplatten-Seriennummer, CPU-IDs, RAM-Größe, Betriebssystem/Benutzer-IDs usw.
Berechnet daraus eine "eigene ID" und schon hat man sowas.

Es sollte aber fehlertollerant sein, also möglichst viele/eindeutige Infos und falls sich ein/zwei ändern (z.B. RAM aufgerüstet oder neue Festplatte), dann sollte sowas "kleines" ignoriert werden können.


PS: Dazu gibt es schon mehrere Themen in der DP und dort wurden auch fertige Komponenten erwähnt, falls man es nicht selber machen will.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DelphiSecurity
DelphiSecurity

Registriert seit: 10. Jan 2011
170 Beiträge
 
Delphi XE Architect
 
#3

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 15:04
OK, Danke.
Für eine Antwort auf 2 wäre ich noch Dankbar
(C) DelphiSecurity 2011 | Delphi XE
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#4

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 15:22
Ich möchte gerne eine Computer ID auslesen.
Sowas gibt es nicht.
Doch, gibt es.
  1. die SID des Systems (komplett in Software, unterscheidet sich aber von System zu System (*)), seit NT4 - nicht jedoch in Windows 9x/ME
  2. DMI

(*) wenn jetzt einer mit Klonen kommt, dann verweise ich direkt an Russinovich und die Gründe das Tool "newsid" einzustellen. Bis XP inklusive (ich selber habe es nur bis XP SP1 getestet) hat das Tool aber zuverlässig funktioniert. Nur bringt das so ziemlich garnix, weil es bspw. in einem Domänenumfeld die Server durcheinander bringt.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#5

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 16:32
Njoar ... doch, denn auch die ID ist ja irgendwie berechnet?

Nja, man könnte ja auch erstmal fragen wozu diese "ID" benötigt wird,
bzw. wie sicher/aufwändig die Seriennummernberechnung/-behandlung SystemID-Berechnung sein muß?
OK, Wobei man doch auch einfach die System- oder User-SID nehmen könnte, welche oftmals ebenfalls recht "eindeutig" wäre, wie Olli erwähnte, auch wenn sie nur die aktuelle Windowinstallation oder den Benutzer kennzeichnet.

Wie gesagt, es gibt schon ein paar fertige Module, welche man nur noch in sein Programm einbauen muß und sich dann selber um fast nix mehr kümmern muß.

Eine ID des Systems, auf welchem das Programm grade läuft, braucht man ja "nur", um das System möglichst sicher identifizieren zu können, aber wozu man sowas braucht, wäre schon praktisch zu wissen, um wirklich helfen zu können.

Hier im Forum suchenSerial Hier im Forum suchenSeriennummer Hier im Forum suchenSeriennummer berechnen ...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Feb 2011 um 16:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#6

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 17:22
Also ich würde so vorgehen,


zu Frage 1: Die Systemsid ermitteln
Delphi-Quellcode:
function ConvertSidToStringSid(SID: PSID; var StringSid: LPSTR): Boolean; stdcall;
external 'advapi32.dllname 'ConvertSidToStringSidA';

 function GetAccountSid(const Server, User: WideString; var Sid: PSID): DWORD;
var
  dwDomainSize, dwSidSize: DWord;
  R: LongBool;
  wDomain: WideString;
  Use: DWord;
begin
  Result := 0;
  SetLastError(0);
  dwSidSize := 0;
  dwDomainSize := 0;
  R := LookupAccountNameW(PWideChar(Server), PWideChar(User), nil, dwSidSize, nil, dwDomainSize, Use);
  if (not R) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
    begin
      SetLength(wDomain, dwDomainSize);
      Sid := GetMemory(dwSidSize);
      R := LookupAccountNameW(PWideChar(Server), PWideChar(User), Sid, dwSidSize, PWideChar(wDomain), dwDomainSize, Use);
      if not R then
        begin
          FreeMemory(Sid);
          Sid := nil;
        end;
    end
  else
    Result := GetLastError;
end;

function GetSystemSID: string;
var
  SID: PSID;
  strSID: PChar;
  CName: array[0..255] of Char;
  nSize: Cardinal;
begin
  Result := '';
  GetComputerName(CName, nSize);
  if GetAccountSid('', CName, SID) = 0 then begin
      ConvertSidToStringSid(SID, strSID);
      Result := strSid;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Add('System SID:'+GetSystemSID);

end;
Zu Frage 2:

Eine Möglichkeit wäre einen CRC32 ( in uses crc32 aufnehmen ) aus dieser Sid zu erstellen zb.
Delphi-Quellcode:
function CheckSum(Sid: string): string;
var
  CRC32: DWORD;
  STemp: string;
  SS: string;
begin
  STemp := '';
  ss := '';
  ss := Sid;

  CRC32 := $FFFFFFFF;
  if LENGTH(ss) > 0
    then CalcCRC32(Addr(ss[1]), LENGTH(ss), CRC32);

  STemp := IntToHex(CRC32, 8);
  Result := STemp;

end;
Und daraus kannst du deine Seriennummer erstellen und mit Bindestrichen versehen.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#7

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 17:31
Eine Möglichkeit wäre einen CRC32 ( in uses crc32 aufnehmen ) aus dieser Sid zu erstellen zb.
Delphi-Quellcode:
function CheckSum(Sid: string): string;
var
  CRC32: DWORD;
  STemp: string;
  SS: string;
begin
  STemp := '';
  ss := '';
  ss := Sid;

  CRC32 := $FFFFFFFF;
  if LENGTH(ss) > 0
    then CalcCRC32(Addr(ss[1]), LENGTH(ss), CRC32);

  STemp := IntToHex(CRC32, 8);
  Result := STemp;

end;
Und daraus kannst du deine Seriennummer erstellen und mit Bindestrichen versehen.
Ich stimme allem anderen zu, aber das ist eine schlechte Empfehlung. Eine CRC (bzw. Checksumme) ist kein Hash. Hier ist eindeutig ein Hash angesagt, vorzugsweise mit "geheimem" Salz ("Salted Hash").
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#8

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 17:37
Nun das man versalzen sollte ist mir schon klar, crc32 finde ich jedoch zu Anschauungszwecken unkomplizierter.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#9

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 18:16
[...] crc32 finde ich jedoch zu Anschauungszwecken unkomplizierter.
Point taken.

Ich wollte nur den Unterschied zwischen Fehlerfindung und Identifizierung klarmachen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#10

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 18:54
Nur daß CRC32 die "lange" SID auf schlappe 32 Bit reduziert. Wenn, dann doch lieber 'ne größere Hash-Funktion verwenden.
MD5 und SHA1 sind da schon ein paar Bits größer.
http://www.delphipraxis.net/151812-mini-sha1.html

Und vor dem Hashen der eigentlichen Daten noch ein bissl SALZ mit einrechnen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 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