Оформить доступ
Лист дела · Идентификатор устройства

Что такое HWID и почему он переживает удаление приложения

HWID — это отпечаток устройства: одна строка, которую приложение считает по железу и системе и показывает тому, чью подписку вы в него положили. Она одинакова для одного устройства и разная для разных, а удаление приложения её не стирает.

Всё, что ниже, взято из документации разработчика для провайдеров и проверено 27.08.2026.

Короткий ответ: что это за строка

Это идентификатор устройства в формате UUID: 36 знаков в верхнем регистре, разбитые дефисами на пять групп. Выглядит он так: 270DD26E-160D-4257-B8AC-654800E12F24.

  • Строка не случайная. Приложение берёт несколько признаков устройства, приписывает к ним постоянную добавку incy_hwid_, считает от всего этого SHA-256 и раскладывает получившийся хеш в форму UUID.
  • Одно устройство — всегда одна и та же строка. Пока признаки не изменились, результат не меняется.
  • Переустановка не помогает. Строка лежит не в обычных файлах приложения, а в защищённом хранилище системы, и удаление программы её не трогает.
  • Уходит она не разработчику клиента, а провайдеру подписки — вместе с несколькими служебными заголовками. Что именно уходит, разобрано ниже.
  • Это не «лимит устройств». Идентификатор и лимит — две разные вещи, которые постоянно путают; лимит разбирается на отдельной странице.

Как из устройства получается строка

Слева направо — весь путь: признаки, постоянная добавка, хеширование, готовый идентификатор. Внизу — почему он живёт дольше самого приложения.

Соль — это фиксированная добавка к исходным данным перед хешированием. Она одна и та же во всех сборках, поэтому одинаковое устройство даёт одинаковый результат.

Из чего он складывается на каждой системе

Набор признаков разный на разных системах — поэтому телефон и компьютер дают разные строки, и одна из них никак не выводится из другой.

  • Android. В расчёт входят системный ANDROID_ID и целый ряд характеристик: производитель, модель, бренд, устройство, продукт, плата и оборудование.
  • iPhone и iPad. Берутся identifierForVendor — идентификатор, который система выдаёт приложениям одного разработчика, — и модель устройства.
  • Windows. Основа — MachineGuid из системного реестра.
  • Linux. Основа — содержимое /etc/machine-id.
  • На обеих настольных системах к этому добавляются имя хоста, название операционной системы, архитектура процессора и имя пользователя.

Переустановка приложения идентификатор не сбрасывает

На Android строка лежит в зашифрованных настройках приложения, на iPhone — в связке ключей системы. Оба хранилища переживают удаление программы. Поэтому совет «снеси и поставь заново» на любой проблеме, завязанной на идентификатор устройства, ничего не меняет: после установки приложение получит ту же строку, что и до неё.

Какие заголовки уходят при включённой отправке

Когда отправка идентификатора включена, приложение добавляет к своим запросам четыре заголовка. Больше в этом списке ничего нет.

ЗаголовокЧто в нём
x-hwidСама строка идентификатора — тот самый UUID из 36 символов
x-device-osСистема устройства
x-ver-osЕё версия
x-device-modelМодель устройства

Что уходит, если у провайдера подключён платный слой

Тогда к четырём заголовкам добавляется регистрация устройства, и состав посылки шире. Приложение отправляет идентификатор и его хеш, анонимный номер пользователя, платформу, версию приложения, версию системы, язык интерфейса, хеш домена подписки, токен для push-уведомлений и время последней активности.

  • Адрес вашей подписки в открытом виде не уходит. Он передаётся только как SHA-256 — по хешу нельзя восстановить исходную ссылку. Как устроена сама ссылка, разобрано на странице про подписку.
  • Ответ сервера зашифрован алгоритмом AES-256-GCM.
  • Google Play в карточке «Безопасность данных» это подтверждает: там прямо указан сбор идентификаторов устройства (проверено 27.08.2026).
  • Мобильные сборки дополнительно содержат Firebase Crashlytics — сервис отчётов о сбоях. Настольный клиент, по заявлению разработчика, телеметрию не отправляет вовсе.

Можно ли отправку выключить?

Не всегда. У провайдера подписки есть флаг принудительной отправки — alwaysHwidEnable. Если он включён, переключатель на стороне пользователя решения уже не меняет: идентификатор уходит в любом случае.

  • Решение принимает не разработчик приложения, а тот, чью подписку вы добавили. Программа сама по себе пустая: поведение ей задаёт подписка.
  • Понять со стороны, включён ли флаг, нельзя — это настройка на стороне провайдера, наружу она не показывается.
  • Из той же настройки растёт и обратный вывод: идентификатор нужен провайдеру для его собственных функций, а не приложению для работы туннеля.

Что могут устройства из списка администраторов

Править ваше приложение изнутри. У провайдера есть список доверенных идентификаторов, и устройства из него могут менять настройки серверов прямо в приложении и рассылать push-уведомления без всякой модерации.

  • Это самый практичный вывод всей страницы. Вопрос «чью подписку я поставил» перестаёт быть формальностью: у владельца подписки есть рычаги внутри программы на вашем устройстве.
  • Список настроек, которые провайдер задаёт всем подряд, и так широк: свой логотип и тема, описания серверов, баннер в карточке подписки, упрощённый режим интерфейса.
  • Туда же входят сетевые настройки — подмена адреса подключения, фрагментация и предварительное разрешение имени сервера через защищённый DNS. Что из этого на что влияет, разобрано на странице про маршрутизацию.
  • Уведомление, пришедшее «от приложения», может быть уведомлением провайдера. Модерации на этом пути нет.

Как защищён сам обмен

Двумя простыми мерами, обе описаны в документации разработчика.

  • Ограничение частоты. Не больше 30 запросов в минуту с одного адреса; сверх этого сервер отвечает кодом 429. Так что перебирать чужие идентификаторы пачками не выйдет.
  • Проверка сертификата (pinning). На Android и на настольном клиенте приложение принимает только заранее известный сертификат сервера. Это ломает подмену соединения посередине — но заодно и попытки посмотреть, что именно уходит, обычными средствами.

Частые вопросы

Можно ли сменить или сбросить HWID?

Проверяемых сведений о таком способе у нас нет — и мы не будем их выдумывать. Известно другое: строка считается от признаков устройства и хранится в защищённом хранилище системы, а удаление приложения её не стирает. Всё остальное, что пишут об этом чужие сайты, ничем не подтверждено.

На телефоне и на компьютере идентификатор один и тот же?

Нет. Наборы исходных признаков разные: на Android это ANDROID_ID и характеристики устройства, на Windows — MachineGuid из реестра, на Linux — /etc/machine-id. Строки получаются разные, и одна из другой не выводится.

Провайдер видит имя моего пользователя в системе?

На Windows и Linux имя пользователя действительно входит в расчёт, но наружу идёт результат хеширования, а не исходный список признаков. Отдельно от идентификатора уходят только система, её версия и модель устройства.

Зачем приложению вообще меня опознавать?

Идентификатор нужен платному слою для провайдеров: по нему считаются устройства, которым выдаются дополнительные функции. Как именно устроен этот счёт и что происходит при его переполнении — на странице про лимит устройств.

Что такое alwaysHwidEnable простыми словами?

Это переключатель на стороне владельца подписки, который делает отправку идентификатора обязательной. Когда он включён, пользователь отказаться от отправки не может.

Насколько эти сведения свежие?

Всё на этой странице снято из документации разработчика 27.08.2026. Формат строки и способ расчёта меняются редко, но состав отправляемых полей разработчик правит вместе с версиями приложения.

Если всё-таки переставляете приложение

Идентификатор от переустановки не меняется, но брать файл заново стоит только у разработчика: пересборка со стороннего сайта считает отпечаток по-своему и ведёт себя иначе.