HWID (Hardware ID)

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

Формат

HWID — hex-строка SHA-256 хеша, производная от аппаратных характеристик устройства с солью incy_hwid_.

Генерация по платформам

Android

Компоненты (объединяются через |):

Компонент
Источник

Android ID

Settings.Secure.ANDROID_ID

Производитель

Build.MANUFACTURER

Модель

Build.MODEL

Бренд

Build.BRAND

Устройство

Build.DEVICE

Продукт

Build.PRODUCT

Плата

Build.BOARD

Оборудование

Build.HARDWARE

Алгоритм:

deviceId = SHA256("androidId|manufacturer|model|brand|device|product|board|hardware")
hwid = SHA256("incy_hwid_" + deviceId)

Результат: 64 символа (hex) Хранение: EncryptedSharedPreferences (сохраняется при переустановке)

Desktop (Linux)

Компоненты (объединяются через |):

Компонент
Источник

Machine ID

/etc/machine-id

Hostname

InetAddress.getLocalHost().hostName

OS

System.getProperty("os.name")

Архитектура

System.getProperty("os.arch")

Пользователь

System.getProperty("user.name")

Desktop (Windows)

Компоненты (объединяются через |):

Компонент
Источник

Machine GUID

HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid

Hostname

InetAddress.getLocalHost().hostName

OS

System.getProperty("os.name")

Архитектура

System.getProperty("os.arch")

Пользователь

System.getProperty("user.name")

Алгоритм (Linux/Windows):

Результат: 64 символа (hex) Хранение: файл {configDir}/device_id

iOS

Компоненты:

Компонент
Источник

Vendor ID

UIDevice.current.identifierForVendor

Имя устройства

Модель устройства

Алгоритм:

Результат: 16 символов (hex) Хранение: Keychain (сохраняется даже при удалении приложения)

iOS использует укороченный формат (16 символов) в отличие от Android/Desktop (64 символа).

Использование

HTTP-заголовки запроса

При включённой отправке HWID приложение добавляет заголовки к запросам подписки:

Premium API — проверка лимита устройств

При запросе конфигурации провайдера клиент передаёт хеш HWID:

Сервер использует hwidHash для проверки, зарегистрировано ли устройство у данного провайдера, и принятия решения о выдаче premium-статуса в рамках лимита устройств.

Поле hwidHash в регистрации

При регистрации устройства в Firestore помимо сырого hwid записывается поле hwidHash = SHA256(hwid). Это позволяет серверу находить устройство по хешу без знания исходного идентификатора.

Принудительная отправка

Провайдер может включить принудительную отправку HWID через Premium API:

При этом пользователь не может отключить отправку HWID для данной подписки.

Short HWID

Для отображения в UI используются первые 8 символов HWID.

Последнее обновление