Russian Qt Forum
Ноябрь 26, 2024, 02:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как уникально идентифицировать компьютеры по железу  (Прочитано 14392 раз)
rudireg
Гость
« : Апрель 30, 2013, 22:33 »

Привет уважаемые.
Хочу написать защиту для своей программы.
Для этого мне нужно как-то идентифицировать каждый компьютер уникальным идентификатором,
для дальнейшей его проверки на моем сервере на валидность, если сервер ответил TRUE  моя прога запуститься.
Уникальный идентификатор компьютера нужно взять из параметров какого нить железа, например видео-карты
Как можно получить подобные данные методом QT ?
Может нужно рыть в сторону IODevice ?
Нужно это сделать кросс-платформенно.
Ранее програмируя в среде Borland Builder C++ я получал идентификатор так:
Код:
    unsigned long sn = 0;
    AnsiString ID;
    if(!GetVolumeInformation("c:/",NULL,NULL,&sn,NULL,NULL,NULL,NULL))
        ShowMessage("Error");
    else
         ID = IntToHex((int)sn,8);
« Последнее редактирование: Апрель 30, 2013, 22:43 от rudireg » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Апрель 30, 2013, 22:37 »

ID нужно взять из параметров какого нить железа, например видео-карты
Т.е. пользователю видео-карту поменять будет уже нельзя? Или винчестер? Или мать? Улыбающийся
Для чего привязываться к железу?
Записан
rudireg
Гость
« Ответ #2 : Апрель 30, 2013, 22:39 »

ID нужно взять из параметров какого нить железа, например видео-карты
Т.е. пользователю видео-карту поменять будет уже нельзя? Или винчестер? Или мать? Улыбающийся
Для чего привязываться к железу?
Ну я считаю привязку к железу наиболее приемлемой защитой ПО...
Мать или видео карту редко меняют...
Может есть еще варианты?
Поделитесь буду рад.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Апрель 30, 2013, 22:48 »

Ну я считаю привязку к железу наиболее приемлемой защитой ПО...
Ну я вам привел доводы. Человек купил у вас программу, вы его машинку запомнили по видео-карте, через неделю этот клиент поменял видео-карту, ваша программа отказалась запускаться у добросовестного клиента (для защит от копирования/использования это самая важная беда).

Может есть еще варианты?
Поделитесь буду рад.
Конечно есть, оглянитесь вокруг. Улыбающийся
Это логин и пароль (хэш пароля). Ваша программа отправила его на сервер, если все нормально (и оплачено), то возвращаем ок. А еще лучше весь сервис (или его часть) держать на сервере и предоставлять к нему доступ по api (json).
Записан
rudireg
Гость
« Ответ #4 : Апрель 30, 2013, 23:05 »

=)
« Последнее редактирование: Апрель 30, 2013, 23:32 от rudireg » Записан
rudireg
Гость
« Ответ #5 : Апрель 30, 2013, 23:19 »



Но тем не менее вопрос остается открытым, как получить данные железа...


У логина и пароля есть недостаток !!!
Один чел может купить прогу, а ползоваться ею он будет не один а со всеми теми , кому он скажет по секрету свой пароль и логин.
Получается 1 человек купил программу, а пользоваться ею могут еще и все его друзья.
Так дело не пойдет...
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #6 : Апрель 30, 2013, 23:39 »

+ если я хочу поменять логин и пароль, то что?  Улыбающийся

Пароли ведь надо периодически менять!

Сделай привязку по нескольким железкам:

* по CPU серийнику
* по MAC адресу
* по биосу
* по еще чему нить

* по UID - у винды наконец (по ключу), она то должна быть
уникальна в не зависимости от того какое железо менялось (по крайней мере лицензионная винда)

Если к тебе пришла инфа о том, что не сходится какой-то один параметр - то все ОК,
значит пользователь проапгрейдил что-то

Если к тебе пришла инфа о том, что вообще ничего не сходится - значит прогу запустили на новом PC.

Как-то так.

ЗЫ: Ох уж эти проприетарщики..
Записан

ArchLinux x86_64 / Win10 64 bit
tester64
Гость
« Ответ #7 : Май 01, 2013, 00:13 »


У логина и пароля есть недостаток !!!
Один чел может купить прогу, а ползоваться ею он будет не один а со всеми теми , кому он скажет по секрету свой пароль и логин.
Получается 1 человек купил программу, а пользоваться ею могут еще и все его друзья.

Комбинировать.
Установить запрет на смену аппаратной привязки чаще раза в сутки. Пусть распространители ключей и их паства работают посменно Подмигивающий
Для смягчения ситуации можно разрешать двойную или тройную привязку - для ситуаций типа: домашний комп + планшетник для поездок + рабочий комп. Хотя лучше установить небольшую дополнительную плату для второй-третьей привязки, так сказать, "проверка на вшивость". Для большинства этого будет достаточно - одно дело широким жестом презентовать своему приятелю халявный ключ или уступить психологически ("ну тебе что, жалко для своих друзей..."), другое - платить за чьи-то хотелки.
И лучше использовать привязку к системной плате, поскольку их меняют обычно только с полным апгрейдом компьютера. Например к MAC адресу встроенной сетевой карты. Хотя обычно он не зашит аппаратно, но регулярно менять его и перенастраивать систему - это занятие для мазохиста. Кстати, привязка по MAC не такая уж редкость у интернет-провайдеров.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #8 : Май 01, 2013, 06:50 »

Может поможет...
http://www.prog.org.ru/topic_18762_15.html
Записан
Bepec
Гость
« Ответ #9 : Май 01, 2013, 09:44 »

Я б проклял такого писателя. У меня 3 компа дома + 2 на работе + ещё малина на линуксе Веселый
Каким фигом я, заплативший за прогу, должен буду мучаться каждый раз включая её? Показает язык

Купил программу - делай что хошь. У меня горел южный мост на компе 3 раза - дефектная партия материнок. Так что ж мне 3 программы покупать? По гарантии то платы меняют Улыбающийся

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

PS возьмите в пример касперыча. Тупо лицензионник. При подключении к инету он шлёт что-то типо "ключ такой то +1 работающий". Если одновременное количество работающих по данному ключу больше, чем разрешено по лицензии - ключ попадает в категорию черного списка. Никаких особых проблем и заморочек. Тогда куплю я на пять компов и буду счастлив Веселый
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Май 01, 2013, 11:19 »

У логина и пароля есть недостаток !!!
Один чел может купить прогу, а ползоваться ею он будет не один а со всеми теми , кому он скажет по секрету свой пароль и логин.

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

ответ по железу - никак, только писать свой код для каждой платформы. Некоторые вещи типа QNetworkInterface есть в Qt, но этого мало. Но за проблемы с заменой железа вас проклянут до 12-го колена. Потому что если делать правильно, пользователь должен будет обращаться к вам за новым бесплатным логином, а старый вам нужно будет блокировать.
« Последнее редактирование: Май 01, 2013, 11:21 от Alex Custov » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #11 : Май 01, 2013, 11:25 »

И лучше использовать привязку к системной плате, поскольку их меняют обычно только с полным апгрейдом компьютера. Например к MAC адресу встроенной сетевой карты. Хотя обычно он не зашит аппаратно, но регулярно менять его и перенастраивать систему - это занятие для мазохиста.

MAC зашит в ROM контроллера, но поменять его в рантайме через диспетчер устройств (или ifconfig) - раз плюнуть.
« Последнее редактирование: Май 01, 2013, 11:27 от Alex Custov » Записан
Bepec
Гость
« Ответ #12 : Май 01, 2013, 11:29 »

И аппаратные ключи вас не спасут к сожалению.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Май 01, 2013, 12:16 »



Но тем не менее вопрос остается открытым, как получить данные железа...

...
Так дело не пойдет...
Чтобы воздух не гонять, просто скажу - этот этап пройден еще в начале 90-х. Поверьте, сейчас Вы занимаетесь изобретением ну очень старого велосипеда  Улыбающийся   
Записан
rudireg
Гость
« Ответ #14 : Май 01, 2013, 14:43 »

PS возьмите в пример касперыча. Тупо лицензионник. При подключении к инету он шлёт что-то типо "ключ такой то +1 работающий". Если одновременное количество работающих по данному ключу больше, чем разрешено по лицензии - ключ попадает в категорию черного списка. Никаких особых проблем и заморочек. Тогда куплю я на пять компов и буду счастлив Веселый

А если юзер запустит на 1 компе несколько копий программы... то сервер получит уведомление о том, что ключ используется несколько раз, и он не будет знать что это запустил один и тот же юзер
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 22.