Hardware id для кроссплатформенной программы
От: Unhandled_Exception Россия  
Дата: 01.02.23 16:10
Оценка:
Всем привет,

Тут было много тем как про кроссплатформенную шаровару, так и про защиту. Сейчас работаю над кроссплатформенной программой (.NET), надо будет прикручивать активацию. И если для Windows с hardware id все более-менее ясно, то с MacOS и Linux не очень понятно, как его получать.

Кто как делает?

PS заметили, как форум оживился в последнее время
Re: Hardware id для кроссплатформенной программы
От: Justme03  
Дата: 01.02.23 16:51
Оценка: 13 (2)
Здравствуйте, Unhandled_Exception, Вы писали:

U_E>Всем привет,


U_E>Тут было много тем как про кроссплатформенную шаровару, так и про защиту. Сейчас работаю над кроссплатформенной программой (.NET), надо будет прикручивать активацию. И если для Windows с hardware id все более-менее ясно, то с MacOS и Linux не очень понятно, как его получать.


Не скажу за винду (я пользуюсь купленной защитой) и за линух (не использую)

А в мак оси — официальная рекомендация использовать MAK адрес. Вот ссылка на их инструкцию как Validate App Store Receipt

https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateLocally.html#//apple_ref/doc/uid/TP40010573-CH1-SW14


Compute the SHA-1 hash to match the local device with the device hash inside the App Store reciept. When computing the SHA-1 hash, use the platform-specific data source. The source of bytes for each platform is:

watchOS: Use the raw bytes from the uuid property of the UUID that identifierForVendor provides.

iOS, iPadOS, tvOS, and iOS apps running on a Mac with Apple silicon: Use the raw bytes from the uuid property of the UUID that identifierForVendor provides.

macOS and apps built with Mac Catalyst: Use the data that returns from copy_mac_address from the example code below.


там же есть и пример кода для его получения
Re: Hardware id для кроссплатформенной программы
От: wantus  
Дата: 01.02.23 16:58
Оценка: 9 (1)
Здравствуйте, Unhandled_Exception, Вы писали:

U_E> для Windows с hardware id все более-менее ясно


Сравним?

По минимуму — MACs, SMBIOS.vendor+product+serial+uuid, MachineGuid.
Re: Hardware id для кроссплатформенной программы
От: vsb Казахстан  
Дата: 01.02.23 17:50
Оценка:
В линуксе есть файл /etc/machine-id. Он обычно при установке создаётся и содержит некий уникальный идентификатор. При переустановке — изменится.

Ещё можно вытащить мак-адрес, а также серийник из биоса. Думаю, в интернете не сложно найти рецепты. С UEFI, наверное, тоже можно.
Re: Hardware id для кроссплатформенной программы
От: rudzuk  
Дата: 01.02.23 18:38
Оценка: 3 (1)
Здравствуйте, Unhandled_Exception, Вы писали:

UE> Кто как делает?


На маке — получить серийный номер устройства, на линуксе собрать маки сетевых адаптеров, отсеяв юэсбишные, при необходимости (для линукса еще можно смотреть на machine-id, но он меняется одной командой). Повышенных привилегий это не требует. Есть еще самый крутой, кмк, идешник — хеш открытого ключа TPM-модуля, но из-под юзера до него не добраться Ну и, конечно, правило хорошего тона — идешниками напрямую не светить, только после хеша!
avalon/3.0.2
Re: Hardware id для кроссплатформенной программы
От: m2user  
Дата: 01.02.23 19:12
Оценка:
Если под hardware id подразумевается производная от этих данных, то все они извлекаются через sysfs в Linux.

HardwareID-0 Manufacturer + Family + Product Name + SKU Number + BIOS Vendor + BIOS Version + BIOS Major Release + BIOS Minor Release

https://learn.microsoft.com/en-us/windows-hardware/drivers/install/specifying-hardware-ids-for-a-computer
Re[2]: Hardware id для кроссплатформенной программы
От: rudzuk  
Дата: 01.02.23 19:36
Оценка: 6 (1)
Здравствуйте, m2user, Вы писали:

m> Если под hardware id подразумевается производная от этих данных, то все они извлекаются через sysfs в Linux.


m> HardwareID-0 Manufacturer + Family + Product Name + SKU Number + BIOS Vendor + BIOS Version + BIOS Major Release + BIOS Minor Release


m> https://learn.microsoft.com/en-us/windows-hardware/drivers/install/specifying-hardware-ids-for-a-computer


На куче материнок эти поля пустые или содержат что-то вроде: To Be Filled By O.E.M.
avalon/3.0.2
Re: Hardware id для кроссплатформенной программы
От: drVanо Россия https://vmpsoft.com
Дата: 02.02.23 08:28
Оценка: 3 (1)
Здравствуйте, Unhandled_Exception, Вы писали:

U_E>Кто как делает?


CPUID, MAC, имя компьютера, UUID системного диска
Re[3]: Hardware id для кроссплатформенной программы
От: Unhandled_Exception Россия  
Дата: 02.02.23 14:52
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>На куче материнок эти поля пустые или содержат что-то вроде: To Be Filled By O.E.M.


Все эти поля могут такими оказаться?
Re[4]: Hardware id для кроссплатформенной программы
От: rudzuk  
Дата: 02.02.23 15:40
Оценка:
Здравствуйте, Unhandled_Exception, Вы писали:

UE> R>На куче материнок эти поля пустые или содержат что-то вроде: To Be Filled By O.E.M.


UE> Все эти поля могут такими оказаться?


Данные о биосе обычно есть, остальные могут быть пустыми или заглушкой. Кстати, поля с наиболее интересным содержимым (серийники материнки, шасси, например) из-под юзера недоступны.
avalon/3.0.2
Re: Hardware id для кроссплатформенной программы
От: maks1180  
Дата: 04.02.23 21:14
Оценка: 12 (1)
Есть огромный опыт по этой теме, но только на Windows (десятки миллинов записей в БД, более 10 лет собирали), определяли по mac адресу и hdd.
Проблемы следующие:
1) mac адреса — есть одинаковые, постоянно вручную довносим такие адреса, что бы их исключать из опеределения.
2) hdd — так же бывают одинаковые (особенно виртуальные диски), так же довносим список hdd которые нужно исключать.
— ещё серийник по разному определяется в зависимости от версии Windows и прав (админ или обычный пользователь).
— ещё после обновления драйверов диска или перепрошики диска может по другому выдавать серийник.
— проблемы с определением серийника NVMe дисков. Пока не нашёл способа его определить без прав админа. Windows ерунду выдаёт заместо серийника.

Так же есть следующая проблема:
Если есть несколько дисков, то выбираем тот на котором стоит система. Но если есть несколько mac адресов, то не понятно какой из них выбрать.
1) например у пользователя 2 mac адреса, мы оба запоминаем, но допустим он перенёс сетевую карту или один диск во второй комп, и второй комп так же теперь идентифицируется как и первый (т.е. имееют одинаковый id).
2) если запоминать не все, а скажем брать первый (или самый меньший) mac адрес, то получается ерунда, так как пользователь может вытащить или воткнуть USB wi-fi адаптер или PCI сетевую карту и будет казаться, что это разные компы.

P.S. Сам готов заплатить за такое решение для Windows & Linux (должно работать без прав админа), если оно будет работать лучше чем моё.
===============================================
(реклама, удалена модератором)
Отредактировано 04.02.2023 21:32 maks1180 . Предыдущая версия . Еще …
Отредактировано 04.02.2023 21:29 maks1180 . Предыдущая версия .
Отредактировано 04.02.2023 21:24 maks1180 . Предыдущая версия .
Отредактировано 04.02.2023 21:21 maks1180 . Предыдущая версия .
Отредактировано 04.02.2023 21:15 maks1180 . Предыдущая версия .
Re[2]: Hardware id для кроссплатформенной программы
От: drVanо Россия https://vmpsoft.com
Дата: 05.02.23 12:46
Оценка:
Здравствуйте, maks1180, Вы писали:

M>P.S. Сам готов заплатить за такое решение для Windows & Linux (должно работать без прав админа), если оно будет работать лучше чем моё.


VMProtectGetCurrentHWID
Re[3]: Hardware id для кроссплатформенной программы
От: rudzuk  
Дата: 05.02.23 12:58
Оценка: +1 :)
Здравствуйте, drVanо, Вы писали:

V> M>P.S. Сам готов заплатить за такое решение для Windows & Linux (должно работать без прав админа), если оно будет работать лучше чем моё.


V> VMProtectGetCurrentHWID


Текст на странице нужно сделать еще более бледным, а то его пока еще можно прочитать.
avalon/3.0.2
Re: Hardware id для кроссплатформенной программы
От: fk0 Россия https://fk0.name
Дата: 05.02.23 18:53
Оценка:
Здравствуйте, Unhandled_Exception, Вы писали:

U_E>Тут было много тем как про кроссплатформенную шаровару, так и про защиту. Сейчас работаю над кроссплатформенной программой (.NET), надо будет прикручивать активацию. И если для Windows с hardware id все более-менее ясно, то с MacOS и Linux не очень понятно, как его получать.


В общем случае -- никак. Если я постоянно апгрейдил компьютер и заменил, последовательно, матьплату, процессор,
жёсткие диски, ОЗУ, блок питания, сетевуху заменил на Wifi. И осталься только корпус. Компьютер "тот же самый".
И монитор тоже новый купил.

U_E>Кто как делает?


Аппаратный USB-ключ с уникальным серийником?
Re[2]: Hardware id для кроссплатформенной программы
От: rudzuk  
Дата: 05.02.23 19:47
Оценка: +2
Здравствуйте, fk0, Вы писали:

fk0> Если я постоянно апгрейдил компьютер и заменил, последовательно, матьплату, процессор,

fk0> жёсткие диски, ОЗУ, блок питания, сетевуху заменил на Wifi. И осталься только корпус. Компьютер "тот же самый".
fk0> И монитор тоже новый купил.

Просто нужно по-другому подходить к идентификации клиента. Идентификатор железа не должен быть идентификатором клиента. Идентификатором клиента должна служить запись в файле лицензии, который, помимо прочего, должен содержать идентификатор/идентификаторы железок. Изменились идентификаторы железок — требуется активация. В ситуации, когда файл лицензии хранит несколько идентификаторов железок можно даже предусмотреть вариант тихой переактивации, когда при смене одного идентификатора и неизменности других файл лицензии автоматически обновляется. Таким образом, постепенный апгрейд не приведет к ручной переактивации.
avalon/3.0.2
Re[3]: Hardware id для кроссплатформенной программы
От: maks1180  
Дата: 05.02.23 23:03
Оценка:
V>VMProtectGetCurrentHWID

Как она работает ?
===============================================
(реклама, удалена модератором)
Re[4]: Hardware id для кроссплатформенной программы
От: drVanо Россия https://vmpsoft.com
Дата: 07.02.23 11:59
Оценка: +1 :)
Здравствуйте, maks1180, Вы писали:

M>Как она работает ?


Работает отлично!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.