Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
valera5505
2 / 2 / 0
Регистрация: 22.05.2011
Сообщений: 19
1

Серийный номер

07.08.2011, 20:27. Просмотров 2524. Ответов 2
Метки нет (Все метки)

Не могу найти информацию как можно реализовать активацию в моей программе (нужно при первом запуске сгенерировать ключ вида 5444-5555-5555-5555, записать его в файл ini а потом написать кейген для проги(есстественно нужно сделать какую-то логику на счет подходит/не подходит ключ)). Как сгенерировать и записать в ini я знаю, а вот как сделать остальные действия - нет. Может вы сможете помочь?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2011, 20:27
Ответы с готовыми решениями:

Серийный номер HDD
Вот такой код нашел на просторах интернета. const SMART_GET_VERSION =...

Серийный номер флешки
Нужно узнать физический серийник флэшки. GetVolumeInformation - возвращает...

Серийный номер устройства USB
Задача такова, нужна программа, которая выясняет Серийный номер устройства ЮСБ...

Delphi 2009 - серийный номер триал.
Прошу помощи. Скачал Delphi 2009, требует серийник. Подскажите, где взять...

Как считать программно серийный номер с SATA диска, физический?
Как считать программно серийный номер с SATA диска, физический? Утверждают,что...

2
Humanoid
Почетный модератор
9969 / 3857 / 344
Регистрация: 12.06.2008
Сообщений: 11,382
07.08.2011, 21:00 2
Лучший ответ Сообщение было отмечено valera5505 как решение

Решение

Я не знаю, как это обычно делается... но можно сделать, что бы 3 группы цифр были случайным серийным номером... а последняя группа - чем-то вроде контрольной суммы.
Delphi
1
2
3
4
5
6
7
g1 := $5444;
g2 := $5555;
g3 := $5555;
g4 := $5555;
 
g0 := g1 xor g2 xor g3 xor <какая-нибудь константа>;
if g4=g0 then правильно else неправильно;
0
Ales'hon'ne
157 / 150 / 50
Регистрация: 03.08.2011
Сообщений: 299
Записей в блоге: 14
07.08.2011, 22:03 3
Как вариант (оно даже работает!!!):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
program test;
 
{$APPTYPE CONSOLE}
 
uses Math, SysUtils;
 
type
  ar4=array[1..4] of Word;
 
//detect - некий секретный ключ для данной копии. На его основе
//  генерируются ключи доступа
 
function x(y:ar4):Word;
begin
  Result:=((y[1]*y[2]) mod y[3])+y[4];
end;
 
function NormalKey(key,detect:string):Boolean;
//
//key=xxxx-xxxx-xxxx-xxxx
//detect=yyyy-yyyy-yyyy-yyyy
var
  KeyData,KeyScan:ar4;
begin
  KeyData[1]:=StrToInt('$'+Copy(key,1,4));
  KeyData[2]:=StrToInt('$'+Copy(key,6,4));
  KeyData[3]:=StrToInt('$'+Copy(key,11,4));
  KeyData[4]:=StrToInt('$'+Copy(key,16,4));
  KeyScan[1]:=StrToInt('$'+Copy(detect,1,4));
  KeyScan[2]:=StrToInt('$'+Copy(detect,6,4));
  KeyScan[3]:=StrToInt('$'+Copy(detect,11,4));
  KeyScan[4]:=StrToInt('$'+Copy(detect,16,4));
  Result:=x(KeyData)=x(KeyScan);
end;
 
function GenerateKey(detect:String):String;
var
  KeyData,KeyScan:ar4;
begin
  Randomize;
  KeyScan[1]:=StrToInt('$'+Copy(detect,1,4));
  KeyScan[2]:=StrToInt('$'+Copy(detect,6,4));
  KeyScan[3]:=StrToInt('$'+Copy(detect,11,4));
  KeyScan[4]:=StrToInt('$'+Copy(detect,16,4));
  KeyData[1]:=Math.RandomRange(1,$FFFF);
  KeyData[2]:=Math.RandomRange(1,$FFFF);
  KeyData[3]:=Math.RandomRange($1000,$FFFF);
  KeyData[4]:=0;
  KeyData[4]:=x(KeyScan)-x(KeyData);
  Result:=IntToHex(KeyData[1],4)+'-'+IntToHex(KeyData[2],4)+'-'+IntToHex(KeyData[3],4)+'-'+IntToHex(KeyData[4],4);
end;
 
var
  t,y,z:String;
  d:String='1d22-130f-5e07-4661';
 
begin
  try
    t:=GenerateKey(d);
    y:=GenerateKey(d);
    z:=GenerateKey('1d22-130f-5e07-4662');
    WriteLn(t,#13#10,y,#13#10,z);
    WriteLn(NormalKey(t,d),' ',NormalKey(y,d),' ',NormalKey(z,d));
    ReadLn;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
у меня в результате вышло:
3360-F501-A4AD-35B1
83B4-40F6-185B-7D53
9BCE-BE25-1E43-8274
TRUE TRUE FALSE


Добавлено через 35 минут
К предыдущему, UN=UserName - любая строка символов
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function GKBUN(un:WideString):String;
var
  KeyData:ar4;
  t:WideChar;
  i:Byte;
begin
  KeyData[1]:=1242;
  KeyData[2]:=1734;
  KeyData[3]:=32772;
  KeyData[4]:=9165;
  for i:=1 to 4 do
    for t in un do
      KeyData[i]:=KeyData[i] xor (ord(t)*KeyData[i])+1;
  if KeyData[3]=0 then
    KeyData[3]:=32772;
  Result:=IntToHex(KeyData[1],4)+'-'+IntToHex(KeyData[2],4)+'-'+IntToHex(KeyData[3],4)+'-'+IntToHex(KeyData[4],4);
end;
 
function ScanKeyUN(key,un:String):Boolean;
begin
  Result:=NormalKey(key,GKBUN(un));
end;
 
function GenerateKeyUN(un:String):String;
begin
  Result:=GenerateKey(GKBUN(un));
end;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2011, 22:03

Серийный номер процессора или жесткого диска или материнки
Парни, помогите пожалуйста, очень нужен пример на delphi 7 как считать серийный...

При поселении в гостиницу каждый участник конференции указал свой регистрационный номер, дату и время приезда и отъезда, номер комнаты и номер телефон
При поселении в гостиницу каждый участник конференции указал свой...

Вывести на экран порядковый номер слова максимальной длины и номер позиции строки с которой оно начинается
Дана строка символов, состоящая из произвольного текста на английском языке,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru