Создание хэша идентификатора устройства для MacOS/Windows/Linux.
Используются максимально статичные параметры системы, которые позволяют генерировать надежные хеши устройств для лицензирования ваших программ.
v2.0.0 - 24 марта, 2024
- Вернул
to_lowercase()
для Windows MID result, который по ошибке был убран в v1.1.3. Это изменит текущие хеши Windows устройств! При необходимости, используйте версию 2.0.0 только для новых проектов или попросите пользователей перепривязать лицензию на новые хеши в текущем проекте. - Добавлена функция
mid::data
, которая возвращает структуру данных: key, result, hash. mid::print
выводит данные в консоль только в режиме отладки, они не попадут в релизную сборку проекта.- В Linux используются 3 источника получения machine-id.
- Секретный ключ для хеширования не может быть пустым.
- Проведен полный рефакторинг кода.
Список параметров, которые используются на каждой из платформ.
system_profiler SPHardwareDataType
Команда возвращает информацию о аппаратных характеристиках компьютера. Используемые параметры:
-
Model Number: Этот параметр представляет собой номер модели компьютера или устройства. Он используется для уникальной идентификации конкретной модели в рамках производителя.
-
Serial Number: Этот параметр является уникальным серийным номером компьютера или устройства. Он используется для идентификации конкретной единицы в рамках определенной модели.
-
Hardware UUID: Этот параметр представляет уникальный идентификатор аппаратного обеспечения (UUID) компьютера или устройства. Он служит для обеспечения уникальной идентификации конкретной единицы в различных системах и средах.
-
Provisioning UDID: Этот параметр представляет уникальный идентификатор устройства (UDID), который может использоваться в процессе предоставления или настройки устройства, обычно в корпоративной или управляемой среде.
system_profiler SPSecureElementDataType
Команда возвращает информацию о безопасном элементе (Secure Element). Этот элемент используется для хранения зашифрованных данных, таких как информация о платежных картах и другие конфиденциальные данные. Используемые параметры:
- Platform ID: Уникальный идентификатор платформы, к которой относится Secure Element (безопасный элемент).
- SEID: Уникальный идентификатор безопасного элемента (Secure Element ID). Создается при прошивки NFC чипа на заводе производителя.
machine-id
: Идентификатор (ID) машины, который используется для уникальной идентификации компьютера в Linux системах.
К сожалению, этот параметр подвержен изменениям, и пока не найдено надежного решения для Linux.
PowerShell - расширяемое средство автоматизации. Используемые параметры:
-
powershell -command "Get-WmiObject Win32_ComputerSystemProduct"
: Возвращает уникальный идентификатор (UUID) продукта компьютера. Обычно связан с материнской платой компьютера. В редких случаях он может измениться после замены или переустановки материнской платы или после изменения BIOS/UEFI на устройстве. -
powershell -command "Get-WmiObject Win32_BIOS"
: Возвращает серийный номер BIOS компьютера. Обычно остается постоянным и не подлежит изменению. -
powershell -command "Get-WmiObject Win32_BaseBoard"
: Возвращает серийный номер базовой платы компьютера. Обычно остается постоянным и не подлежит изменению. -
powershell -command "Get-WmiObject Win32_Processor"
: Возвращает идентификатор процессора компьютера. Должен оставаться неизменным, за исключением случаев замены процессора.
Добавить зависимость в Cargo.toml
[dependencies]
mid = "2.0.0"
Или установить с помощью Cargo CLI
cargo add mid
Получить хеш устройства
let machine_id = mid::get("mySecretKey").unwrap();
Получить данные MID key/result/hash
let mid_data = mid::data("mySecretKey").unwrap();
Вывести в консоль MID key/result/hash в режиме debug_assertions
mid::print("mySecretKey");
MID key
- Секретный ключ для хэшированияMID result
- Массив параметров OSMID hash
- Хеш SHA-256 от result
Здесь я буду делиться своими разработками и проектами https://x.com/doroved