Показать сообщение отдельно
  #5  
Старый 27.06.2010, 17:10
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

я как-то делал так (лет много-много назад): брал Windows Product ID:
Код:
function ProductID: string;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion',false);
  Result := Reg.ReadString('ProductId');
  Reg.Free;
end;
HardDisk ID:
Код:
function GetHardID:string;
var
  SerialNum: dword;
  a, b: dword;
  Buffer: array [0..255] of char;
begin
  if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), @SerialNum, a, b, nil, 0) then Result := IntToStr(SerialNum);
end;
BiosInfo:
Код:
function BIOSInfo(OS: string):string;
var
  p: pointer;
  s: string[255];
begin
  if OS='NT' then begin with TRegistry.Create do
    try RootKey := HKEY_LOCAL_MACHINE;
      if OpenKeyReadOnly('HARDWARE\DESCRIPTION\System') then Result := ReadString('SystemBiosDate')
    finally
      Free;
    end;
  end
  else try
    s[0] := #8;
    p := Pointer($0FFFF5);
    Move(p^,s[1],8);
    Result := copy(s,1,2) + '/' + copy(s,4,2) + '/' +copy (s,7,2);
  except Result := 'XX.XX.XXXX';
  end;
end;
использовать так
Код:
BiosInfo('NT');
// для Win9x - BiosInfo('');
складывал этот в string строку и извлекал из этого MD5 Hash. Подделать такое проблематично
Код:
HardwareID := MD5(ProductID + GetHardID + BiosInfo('NT'));
Далее, можно от полученного MD5 "отрезать" половину (или вырезать символы через один) и юзать, подобрать такой hash будет невозможно

P.S. MD5 Unit прилагается во вложении.
Вложения
Тип файла: zip md5.zip (5.9 Кбайт, 276 просмотров)
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel
Ответить с цитированием