Идентификатор устройства (HWID)
Что такое хешированный идентификатор устройства, как Letakof его формирует, куда передаёт, что его меняет и как отключить.
При обновлении подписки Letakof может передавать технический идентификатор устройства (HWID) непосредственно выбранному вами провайдеру подписки. Провайдеры используют его для управления доступом к подписке и ограничения числа устройств. Letakof не передаёт этот идентификатор на серверы Lekavot Limited: запрос уходит только вашему провайдеру.
Как он формируется
Letakof не отправляет никакого сырого системного идентификатора. Значение строится в два шага, одинаково на всех платформах:
- Читается постоянный идентификатор вашей установки:
MachineGuidWindows,IOPlatformUUIDmacOS, идентификатор поставщика iPhone (сохраняется в Keychain при первом запуске) илиANDROID_IDAndroid. - Он хешируется: хеш MD5 даёт производный UUID, затем хеш SHA-256 этого UUID усекается до первых 8 байт и записывается в шестнадцатеричном виде. Результат — 16 символов вида
0123456789abcdef(выдуманное значение).
В терминах: это хеширование, усечение и шестнадцатеричное кодирование. Это не шифрование: ключа нет, и расшифровывать нечего. Системный идентификатор по значению восстановить нельзя. Но одно и то же устройство всегда даёт одно и то же значение: у хеширования нет секретного ключа, поэтому для провайдера идентификатор не анонимен. Узнавать одно и то же устройство — его прямое назначение.
От чего зависит
| Платформа | Источник | Меняется, когда |
|---|---|---|
| Windows | MachineGuid |
Переустановлена Windows или вы используете другой компьютер. Переустановка Letakof его не меняет. |
| macOS | IOPlatformUUID |
Вы используете другой Mac. Переустановка Letakof или macOS его не меняет. |
| iPhone | Идентификатор поставщика, в Keychain | Устройство стёрто или восстановлено на другом без зашифрованной копии. Переустановка Letakof его сохраняет. Если приложение переподписано другой командой разработчика, старая запись может стать недоступной, и значение изменится. |
| Android | ANDROID_ID |
Устройство сброшено, используется другой пользователь Android или приложение подписано другим ключом. Переустановка с той же подписью его не меняет. |
Android TV считается отдельным устройством, потому что у него свой ANDROID_ID.
Значение вычисляется по мере необходимости и отдельно не хранится. Если системный идентификатор недоступен, Windows и macOS используют случайное значение, сохранённое на устройстве; на Android при включённом Отправлять HWID добавить или обновить подписку тогда не удастся — с ошибкой Android ID недоступен на этом устройстве.
Значение видно в Настройки → Подписка и HWID → HWID, его можно скопировать кнопкой Скопировать HWID, например чтобы передать провайдеру.
Когда и куда передаётся
- Только в запросе на адрес вашей подписки: при добавлении, ручном обновлении и автообновлении. Профиль, импортированный из файла, запросов не делает.
- Только на этот адрес. Не наборам правил, не базам GEO, не логотипам, не проверке задержки и не серверам обновлений.
- Вместе с тремя другими заголовками:
x-device-os,x-ver-osиx-device-model. См. Список заголовков.
Отключение
Настройки → Подписка и HWID → Отправлять HWID по умолчанию включено. Если выключить, ни один из четырёх заголовков устройства не отправляется. Значение по-прежнему видно в настройках.
Провайдеры, ограничивающие устройства, после этого могут отказать в запросе. Панель часто отвечает обычным 200 и заглушкой вместо профиля, добавляя заголовки, которые Letakof распознаёт. Тогда вы увидите Сервер ограничивает устройства по HWID. Включите «Отправлять HWID» в настройках и повторите, а прежний профиль сохранится. Если лимит исчерпан, вы увидите Достигнут лимит устройств для этой подписки или Удалите одно из них на стороне провайдера: освободите место в аккаунте у провайдера и повторите.
Вопросы
Может ли провайдер опознать моё устройство? Провайдер видит в своих запросах одно и то же значение для одного и того же устройства и может различать устройства. Для этого идентификатор и нужен. В нём нет вашего имени, а системный идентификатор, из которого он получен, не отправляется.
Видит ли его Lekavot Limited? Нет. Приложение не делает запросов к серверам Lekavot Limited.
Нашли ошибку? Создайте обращение на GitHub.