Skip to content

Latest commit

 

History

History
157 lines (101 loc) · 9.7 KB

README_RU.md

File metadata and controls

157 lines (101 loc) · 9.7 KB

Crates.io Version Crates.io Total Downloads docs.rs

Сделано с ❤️ для Tauri

mid

Создание хэша идентификатора устройства для MacOS/Windows/Linux.

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

История изменений

v3.0.0 - 18 сентября, 2024

Important

Platform ID был удален из набора данных для создания хеша mac устройств, т.к. после обновления с macos 14.x до 15.0, он изменился, что привело к изменению хеша устройства. Используйте эту версию только для новых проектов или обновите хеши устройств ваших текущих пользоватей.

v2.1.0 - 30 июня, 2024

  • Добавлена функция mid::additional_data, которая возвращает дополнительные данные об устройстве, которые не участвуют в формировании хеша устройства. На текущий момент доступно только для MacOS.

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.
  • Секретный ключ для хеширования не может быть пустым.
  • Проведен полный рефакторинг кода.

Список параметров, которые используются на каждой из платформ.

MacOS

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 чипа на заводе производителя.

Windows

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": Возвращает идентификатор процессора компьютера. Должен оставаться неизменным, за исключением случаев замены процессора.

Linux

  • machine-id: Идентификатор (ID) машины, который используется для уникальной идентификации компьютера в Linux системах.

К сожалению этот параметр подвержен изменению со стороны пользователя и пока не найдено надежного решения для Linux..

Как установить

Добавить зависимость в Cargo.toml

[dependencies]
mid = "3.0.0"

Или установить с помощью Cargo CLI

cargo add mid

Как использовать

Получить хеш устройства

let machine_id = mid::get("mySecretKey").unwrap();
Пример: 3f9af06fd78d3390ef35e059623f58af03b7f6ca91690f5af031b774fd541977

Получить данные MID key/result/hash

let mid_data = mid::data("mySecretKey").unwrap();
MacOS пример: MidData { key: "mySecretKey", result: ["ModelNumber", "SerialNumber", "HardwareUUID", "ProvisioningUDID", "SEID"], hash: "3f9af06fd78d3390ef35e059623f58af03b7f6ca91690f5af031b774fd541977" }

Вывести в консоль MID key/result/hash в режиме debug_assertions

mid::print("mySecretKey");
MacOS пример:
MID.print[key]: mySecretKey
MID.print[result]: ["ModelNumber", "SerialNumber", "HardwareUUID", "ProvisioningUDID", "SEID"]
MID.print[hash]: 3f9af06fd78d3390ef35e059623f58af03b7f6ca91690f5af031b774fd541977
  • MID key - Секретный ключ для хэширования
  • MID result - Массив параметров OS
  • MID hash - Хеш SHA-256 от result

Получить дополнительные данные об устройстве

Эти данные не участвуют в формировании хеша устройства. На текущий момент доступно только для MacOS.

let additional_data = mid::additional_data().unwrap();
println!("{:?}", additional_data);
AdditionalData { username: "doroved", hostname: "MacBook-Pro--doroved.local", os_name: "Sonoma", os_version: "14.5", os_full: "Sonoma 14.5", chip: "Apple M1 Pro", memsize: 16, cpu_core_count: 8, languages: ["ru-RU", "bg-RU", "en-RU"] }

Подписывайтесь на мой Х

Здесь я буду делиться своими разработками и проектами https://x.com/doroved

Ссылки