Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить ID компа, на котором запустили прогу, Или любая уникальная информация о компе 
:(
    Опции темы
Alexzz
Дата 11.3.2008, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

Репутация: 1
Всего: 1



Задача такова: Нужно защититься от копирования программы на другой комп. Для этого нужно как либо получить любой уникальный код, (либо число, либо строку), который бы был уникален для конкретного компа и не менялся со временем.
Вот собственно и весь вопрос.
PM WWW ICQ MSN   Вверх
Craft
Дата 12.3.2008, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 1.3.2008

Репутация: нет
Всего: нет



Это невозможно. Можно конечно делать привьязку до железа но я не уверен что это выход. Можеш генерировать мас-адрес компа просто или брать идентификаторы самого железа(проца, материнки и т.п.)  или то и другое вместе.  И у тебя выйдет уникальный код  smile 
PM MAIL   Вверх
Alexzz
Дата 12.3.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

Репутация: 1
Всего: 1



Так вот в том и вопрос, как добраться хоть до одного идентификатора?
PM WWW ICQ MSN   Вверх
Letov
Дата 12.3.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



DRKB. Там есть много материала по этой теме. Вот , например:


-------------------------------
Из DRKB:
Часть информации о диске можно получить при помощи функции GetVolumeInformation. Она позволяет узнать метку, тип файловой системы, серийный номер, максимальную длину имен файлов, а также несколько параметров, связанных с регистром букв в именах файлов, сжатием информации и др. 

Для определения типа диска используется функция GetDriveType. Для определения объема диска и свободного пространства - GetDiskFreeSpaceEx. Для определения размера кластера и сектора можно использовать GetDiskFreeSpace. Здесь это не используется. 
 
Код

procedure TForm1.Button1Click(Sender: TObject);
const
Flags: array [0..5] of cardinal = (
   FS_CASE_IS_PRESERVED,
   FS_CASE_SENSITIVE,
   FS_UNICODE_STORED_ON_DISK,
   FS_PERSISTENT_ACLS,
   FS_FILE_COMPRESSION,
   FS_VOL_IS_COMPRESSED);

var
c: char;
s: string;
li: TListItem;

DriveType: integer;
bufLabel, bufFileSystem: array [0..1027] of char;
SerialNumber, MaxFileNameLength, FileSystemFlags: cardinal;
i: integer;
freeavalilable, totalspace, totalfree: int64; 

procedure AddSpace(value: int64);
const onfiltered= 1024; onfiltered= 1024 * OneKB; onfiltered= 1024 * OneMB;
var
   b, kb, mb, gb: integer;
   v: int64;
   s: string;
begin
   gb := value div OneGb;
   v := value mod OneGb;
   mb := v div OneMb;
   v := v mod OneMb;
   kb := v div OneKb;
   b := v mod OneKb;
   if gb > 0
     then s := IntToStr(gb) + ' gb'
     else s := '';
   if mb > 0 then s := s + ' ' + IntToStr(mb) + ' mb';
   if kb > 0 then s := s + ' ' + IntToStr(kb) + ' kb';
   if b > 0 then s := s + ' ' + IntToStr(b) + ' b';
   if s = '' then s := '0';
   li.SubItems.Add(s);
end; 

begin
ListView1.Items.BeginUpdate;
ListView1.Items.Clear;
 

for c := 'A' to 'Z' do begin
   s := c + ':';
   DriveType := GetDriveType(PChar(s));
   if DriveType = 1 then continue; 

   li := ListView1.Items.Add;
   li.Caption := s;
   case DriveType of
     0: li.SubItems.Add('unknown');
     DRIVE_REMOVABLE: li.SubItems.Add('removable');
     DRIVE_FIXED: li.SubItems.Add('fixed');
     DRIVE_REMOTE: li.SubItems.Add('remote');
     DRIVE_CDROM: li.SubItems.Add('cdrom');
     DRIVE_RAMDISK: li.SubItems.Add('ramdisk');
   end;
   if not GetVolumeInformation(PChar(s), bufLabel, sizeof(bufLabel),
     addr(SerialNumber), MaxFileNameLength, FileSystemFlags,
     bufFileSystem, sizeof(bufFileSystem)) then continue;
   li.SubItems.Add(bufLabel);
   li.SubItems.Add(bufFileSystem);
   li.SubItems.Add(IntToStr(SerialNumber));
   li.SubItems.Add(IntToStr(MaxFileNameLength));

   for i := low(flags) to high(flags) do
     if (FileSystemFlags and flags[i]) <> 0
       then li.SubItems.Add('yes')
       else li.SubItems.Add('no');

 GetDiskFreeSpaceEx(PChar(s), freeavalilable, totalspace, @totalfree);
   AddSpace(freeavalilable);
   AddSpace(totalspace);
   AddSpace(totalfree);
end;
ListView1.Items.EndUpdate;
end;

procedure TForm1.FormCreate(Sender: TObject);
const
FlagStrs: array [0..5] of string = (
   'Case preserved',
   'Case sensitive',
   'Unicode',
   'Preserve ACLs',
   'File Compression',
   'Volume Compression');
 

procedure AddColumn(caption: string);
var
   lc: TListColumn;
begin
   lc := ListView1.Columns.Add;
   lc.Caption := caption;
   lc.Width := ColumnHeaderWidth;
end;


var
i: integer;
begin
ListView1.ViewStyle := vsReport;
AddColumn('root');
AddColumn('type');
AddColumn('label');
AddColumn('file system');
AddColumn('Serial Number');
AddColumn('MaxFileNameLen');
for i := low(FlagStrs) to high(FlagStrs) do
   AddColumn(FlagStrs[i]);
AddColumn('FreeAvalilable');
AddColumn('TotalSpace');
AddColumn('TotalFree');
Button1.Click;
end;


©Drkb::01383

--------------------

В DRKB много хороших примеров.



--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
Alexzz
Дата 14.3.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

Репутация: 1
Всего: 1



Пока искал информацию по GetVolumeInformation нашёл вот такую темку в инете: клик. Вот теперь в раздумьях, то ли это что мне нужно...

Фишка в том, что этот серийник не должен поменяться со временем, иначе мне поновой придётся выдавать человеку регистрационный код. А потом я не смогу контролировать, когда у него действительно поменялся серийник а когда он просто решил поделиться програмкой с кем-то ещё.

Это сообщение отредактировал(а) Alexzz - 14.3.2008, 21:13
PM WWW ICQ MSN   Вверх
lukas
Дата 15.3.2008, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



слышал что у сетевых карт есть свои уникальный серийный номер, а сетевая плата меняется редко (но ее может еще и не быть, а чем черт не шутит), а вот как его получить проблема другая...


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
mmvds
Дата 15.3.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: нет
Всего: 6



Цитата(lukas @  15.3.2008,  06:45 Найти цитируемый пост)
слышал что у сетевых карт есть свои уникальный серийный номер, а сетевая плата меняется редко (но ее может еще и не быть, а чем черт не шутит), а вот как его получить проблема другая... 

угу, Mac адрес, прошит заводской, но и его можно менять стандартной утилитой arp, правда на 30 секунд, потом возвращается изначальный, но для тех кто умеет писать простейшие скрипты это не проблема smile
PM MAIL ICQ   Вверх
lukas
Дата 15.3.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



думаю это не критическое обстоятельство... придется постоянно запускать скрипты, да и к томуже крекеру нужно будет понять логику программы... что еще усложняет процесс взлома, можно еще к программе добавить цифровую подпись, что то вроде хеша самого текста програмного файла *.exe... 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Alexzz
Дата 31.1.2010, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

Репутация: 1
Всего: 1



Может кто всё-же владеет информацией, как получить какой-нибудь идентификатор мамки или проца?
PM WWW ICQ MSN   Вверх
profesiachuvak
Дата 1.2.2010, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: 1
Всего: 4



Цитата(Alexzz @  11.3.2008,  22:37 Найти цитируемый пост)
Для этого нужно как либо получить любой уникальный код, (либо число, либо строку), который бы был уникален для конкретного компа и не менялся со временем.


Если б всё было так просто. Такими уникальными номерами могут быть лишь мак адреса, но опять же где гарантия что оборудование не будет меняться?

На счёт получения мак адресов в DRKB куча примеров. Качайте базу знаний


--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
Snowy
Дата 1.2.2010, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Мак адрес уникален только в теории.
Реально его легко поменять без ущерба.
Кроме того мак может быть не один.
А вот к ID проца, пожалуй можно привязаться.
Получаем информацию о железе
PM MAIL   Вверх
~FoX~
Дата 1.2.2010, 12:18 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



Цитата(lukas @  15.3.2008,  18:06 Найти цитируемый пост)
думаю это не критическое обстоятельство... придется постоянно запускать скрипты

Мак меняется стандартными средствами управления винды, без ущерба и на всегда  smile 
Цитата(Snowy @  1.2.2010,  12:29 Найти цитируемый пост)
А вот к ID проца, пожалуй можно привязаться.

ИМХО, проц легко и часто меняется...по крайней мере я меняю раз в пол года, а то и чаще... А если прога для оффисов, то там, проци летят вообще как расходники...
Опят таки ИМХО, привязывать программу надо к тому на чем она лежит - т.е. к винту, его ид не изменить... Даже если человек захочет поставить ось заново, то прогу переригистрить не придется...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Snowy
Дата 1.2.2010, 12:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Вообще можно привязываться к материнке. 
Но я не уверен, что серийник биоса неизменен.
А так можно оговаривать, что лицензия на процессор.
Уж не знаю, как у вас буржуинов, но я не вижу смысла менять процессор каждые полгода - бред какой-то.
Я меняю раз в 4-5 лет вместе с материнкой.
А, если у вас на работе процы летят, как расходники, то нужно увольнять или пользователей, или тех, кто такое фуфло закупил.
PM MAIL   Вверх
profesiachuvak
Дата 1.2.2010, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: 1
Всего: 4



Цитата(~FoX~ @  1.2.2010,  12:18 Найти цитируемый пост)
Мак меняется стандартными средствами управления винды, без ущерба и на всегда  


Цитата(Snowy @  1.2.2010,  11:29 Найти цитируемый пост)
Реально его легко поменять без ущерба.


А смысл? Неужели Вы так часто меняете мак адреса?  smile 



--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
former
Дата 1.2.2010, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 4
Всего: 17



Есть утилиты, которые позволяют семенить mac-адрес. Поэтому mac - не выход.
По-поводу серийного номера HDD (заводского). На рынке железа полно винтов, у которых вместо серийного номера иероглифы. Так что тоже не выход.
Лучше уж действительно к процу с материнкой. В любом случае придется криптовать участки бинарника, где все это выполняется.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1606 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.