- Android device ID
- Русские Блоги
- Уникальная идентификация Android-устройства
- Предисловие
- Разница между IMEI, MEID, ESN, IMSI, android_id
- Получите анализ уникальной идентификации Android
- 1. DEVICE_ID, разные мобильные устройства возвращают IMEI, MEID или ESN код
- 2. MAC-адрес
- 3.ANDROID_ID
- 4. серийный номер
- 5. ID установки
- Фактическое использование идентификаторов
- 1. Отслеживайте использование оборудования пользователем на уровне
- 2. Отслеживание оборудования на аппаратном уровне.
- подводить итоги
Android device ID
Бывает возникает необходимость получить какой-то уникальный идентификатор для Android телефона. Какие могут быть варианты? В данном топике опишу семь известных мне способов сделать это. (Точее, способов будет шесть, а вот седьмой как вариант – это комбинация всех шести предыдущих). Итак.
Android IMEI.
Думаю, Вам известно, что каждый, даже самый старый черно-белый телефон, имеет свой уникальный идентификатор – IMEI (International Mobile Equipment Identity), применяемый по большей степени в GSM сетях. Он устанавливается производителем телефона и хранится в прошивке. Можем его смело использовать в качестве требуемого идентификатора:
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String devicIMEI = telephonyManager.getDeviceId();
Для эмулятора всегда возвращается «000000000000000″, для реального телефона что-то наподобие «351256985671943″
Phone Number
Следующим образом можем получить номер телефона:
String phoneNumber = telephonyManager.getLine1Number();
Вернет строку вида: +ХХХХХХХХХХХХ (Х = [0..9])
Примечание: предыдущие два примера требуют указания в манифесте следующего пермишина:
android.permission.READ_PHONE_STATE
Псевдо-уникальный ID
Не все андроид-девайсы могут быть оснащены GSM-модулем, скажем, зато у всех у них есть производитель, который «слепил» устройство из всяких железок. Вот какраз информация об этих железках, собранная вместе, и может послужить в качестве уникального идентификатора (правда возможны и повторения). В некоторых случаях может пригодиться. Сконструируем из этих данных что-то похожее на IMEI телефона (15 знаков):
String pseudoID = «35″ +
Build.BOARD.length()%10 + Build.BRAND.length()%10 +
Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +
Build.DISPLAY.length()%10 + Build.HOST.length()%10 +
Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +
Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +
Build.TAGS.length()%10 + Build.TYPE.length()%10 +
Build.USER.length()%10;
Android ID
Это еще один ID. Считается ненадежным, так как может в некоторых случаях быть и null. Обратимся к документации:
A 64-bit number (as a hex string) that is randomly generated on the device’s first boot and should remain constant for the lifetime of the device.
Ничего, пригодится:
String androidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Wi-Fi Mac адрес
В качестве уникального Device Id можно использовать Mac Wi-Fi-адаптера. Для его получения необходимо в манифесте установить права: android.permission.ACCESS_WIFI_STATE
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String wifiMac = wifiManager.getConnectionInfo().getMacAddress();
Androif BlueTooth ID
По аналогии с Wi-Fi мак-адресом, может взять и голубозубый мак. (требуются права android.permission.BLUETOOTH и, возможно, включенный адаптер)
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String blueToothMac = bluetoothAdapter.getAddress();
Номер 7
Вариация всех предыдущих методов. Самый простой вариант – получить все вышеописанные идентификаторы, сложить в одну строку и взять md5 хеш от этой строки.
Источник
Русские Блоги
Уникальная идентификация Android-устройства
Предисловие
Недавно я хотел узнать о получении уникальной идентификации устройства, и тут у меня заболела голова. тогда. . . . . .
Подведем итоги сегодня.
Разница между IMEI, MEID, ESN, IMSI, android_id
Давайте сначала определим несколько концепций, которые способствуют следующему развитию:
1.IMEI
- (IMEI: международный идентификационный номер мобильного оборудования) — это знак, который определяет мобильное оборудование. Он хранится в мобильном оборудовании и может использоваться для отслеживания украденного или недействительного мобильного оборудования. Состав IMEI показан на рисунке ниже. Наберите «* # 06 #», чтобы найти его.
- Общая длина составляет 15 цифр, и для каждой цифры используются только 0–9 цифр. Среди них TAC представляет собой код сборки модели, присвоенный Европейским центром стандартизации моделей; FAC представляет номер производителя сборки; SNR — серийный номер продукта, используемый для различения каждого мобильного устройства в одном TAC и FAC; SP — резервный код.
IMEI состоит из 15 цифр, а его состав:
1. Первые 6 цифр (TAC) — это «номер утверждения модели», который обычно представляет модель.
2. Следующие две цифры (FAC) — это «окончательный номер сборки», который обычно обозначает место производства.
3. Следующие 6 цифр (SNR) — это «серийный номер», который обычно представляет собой производственный порядковый номер.
4. Последняя цифра (SP) обычно «0», это контрольный код, который в настоящее время зарезервирован.
Роль строкового кода:
IMEI: TAC + FAC + SNR + SP. IMEI (International Mobile Equipment Identity) — это аббревиатура от International Mobile Equipment Identity. International Mobile Equipment Identity — это «электронный серийный номер», состоящий из 15 цифр. Он соответствует каждому мобильному телефону один за другим, а код является всемирным. только. После сборки каждому мобильному телефону будет присвоен глобально уникальный набор номеров, который будет записан производителем от производства до доставки.
Когда мобильный телефон украден, если вы знаете код IEMI, вы можете заблокировать мобильный телефон через оператора мобильной связи, то есть узнать номер мобильного телефона после кражи, отключить функцию вызова мобильного телефона и узнать номер мобильного телефона. должность. В обычных условиях поставщики не принимают запросы от частных лиц или организаций на обнаружение или блокировку мобильных телефонов. В Китае соответствующие департаменты национальной безопасности будут в определенной степени управлять серийными номерами мобильных телефонов.
- Идентификатор мобильного оборудования (MEID) — единственный 56-битный идентификационный номер мобильного терминала в мире. Идентификационный номер будет записан в терминал и не может быть изменен. Может использоваться для идентификации и отслеживания мобильных устройств. Поскольку сегмент номера ESN является ограниченным ресурсом, он в основном исчерпан, и может быть небольшое количество повторно используемых сегментов номера, поэтому 56-битный сегмент номера MEID был разработан для замены 32-битного сегмента номера ESN. MEID в основном используется для мобильных телефонов CDMA.
- Из-за увеличения числа мобильных устройств CDMA исходного 8-битного ESN недостаточно, поэтому получился MEID 56 бит = (56/4 = 14 байтов). Современные мобильные телефоны CDMA обычно имеют как ESN / MEID. MEID также выражается в шестнадцатеричном формате.
MEID идентифицируется 14 шестнадцатеричными цифрами, а 15-я цифра является контрольной цифрой, которая не участвует в эфирной передаче.
RR: диапазон A0-FF, выделенный официальным лицом
XXXXXX: диапазон 000000-FFFFFF, выделенный официальным
ZZZZZZ: диапазон 000000-FFFFFF, серийный номер, присвоенный каждому терминалу производителем.
C / CD: 0-F, проверьте код
Номера IMEI и MEID в мобильных телефонах похожи на идентификационные карты в нашей жизни. Они являются важной основой для идентификации мобильных телефонов. Например, мобильные телефоны с ложными номерами, операторы сети могут в любой момент отключить этот мобильный телефон в сети с помощью технических средств. Это принесет огромные риски пользователям мобильных телефонов. На номера IMEI или MEID, используемые в мобильных телефонах, можно по закону подать заявку через соответствующие агентства, такие как Moore Laboratories.
Кроме того, приложение MEID требует оплаты. Текущая цена составляет 8000 долларов США за каждый MEID в диапазоне 1M и дополнительные 8000 долларов США за каждый дополнительный номер MEID в диапазоне 1M.
Номера MEID назначаются и управляются Ассоциацией телекоммуникационной индустрии (TIA).
Проверка номера MEID, в настоящее время не существует универсального метода, который устанавливается каждым производителем мобильных телефонов. Вы можете проверить номер MEID, проверив инструкцию к телефону.
- Электронный серийный номер в системе CDMA является уникальным идентификатором для идентификации физического аппаратного устройства. Другими словами, каждый мобильный телефон использует этот уникальный идентификатор для идентификации, как и личная идентификационная карта. ESN в CDMA соответствует IMEI в сети GSM. ESN имеет 32 бита,
- То есть 32/4 = 8 байтов. С увеличением количества мобильных устройств CDMA ESN становится недостаточно, поэтому вводится MEID с большим количеством цифр. ESN выражается в шестнадцатеричном формате.
- Международный идентификационный номер мобильного абонента (IMSI: International Mobile Subscriber Identification Number) — это знак, который различает мобильных пользователей. Он хранится на SIM-карте и может использоваться для отличия эффективной информации от мобильных пользователей.
- Общая длина IMSI не превышает 15 цифр, также используются числа от 0 до 9. Среди них MCC — это код страны мобильного пользователя, который занимает 3 цифры. MCC Китая определяет его как 460; MNC — это номер мобильной сети, состоящий из двух цифр, используемый для идентификации сети мобильной связи, к которой принадлежит мобильный пользователь;
- MSIN — это идентификационный код мобильного пользователя, используемый для идентификации мобильных пользователей в сети мобильной связи.
- Уникальный идентификационный код устройства Android
Согласно приведенному выше резюме, соответствующая информация о вашем мобильном телефоне выглядит следующим образом:
meid[99000939335539]
imei1[863254036690765]
imei2[863254036690773]
simSerialNumber [89860117801033225378]
subscriberId [460011691516816]
Это телефоны Huawei:
MEID:A000007F2C4002
IMEI1:866957038217380
IMEI2:866957038364067
PESN:802B5D2A
SN:8BN02179015937
Поскольку мой мобильный телефон поддерживает две SIM-карты, у меня есть два номера imei.
Получите анализ уникальной идентификации Android
1. DEVICE_ID, разные мобильные устройства возвращают IMEI, MEID или ESN код
Это серийный номер, предоставляемый системой Android разработчикам для идентификации мобильных телефонов, и он также является наиболее универсальным среди различных методов.Можно сказать, что почти все устройства могут возвращать этот серийный номер с хорошей уникальностью.
Немобильное устройство: если только устройство с Wi-Fi или музыкальный проигрыватель не имеет аппаратной функции для звонков, такого DEVICE_ID нет.
Разрешение: для получения DEVICE_ID требуется разрешение READ_PHONE_STATE, но если мы его только получаем и не используем другие функции вызова, то это разрешение слишком велико для использования
1.1 Sim Serial Number — уникальный идентификатор SIM-карты мобильного телефона.
код показан ниже:
Примечание. Для устройств CDMA возвращается нулевое значение.
1.2 Некоторые другие значения, которые может получить TelephonyManager
Дополнительные сведения о TelephonyManager см. В этом блоге.Telephonymanager подробно
2. MAC-адрес
MAC-адрес глобально уникален и не может быть сброшен пользователем, а также не изменится после восстановления заводских настроек. Как правило, не рекомендуется использовать MAC-адреса для какой-либо формы идентификации пользователя. Поэтому начиная с Android M,Больше не доступно через сторонние APIMAC-адрес локального устройства (например, WLAN и Bluetooth). [WifiInfo.getMacAddress()] Методы и [BluetoothAdapter.getDefaultAdapter().getAddress()] Метод вернет 02:00:00:00:00:00 。
Есть способы получить MAC-адрес 8.0wifi в Интернете:
Вышеупомянутый метод доступен как для мобильных телефонов Xiaomi Android 8.0, так и для мобильных телефонов Huawei Honor 8.0. Остальные телефоны не тестировал.
заметка:
Чтобы получить MAC-адрес, он должен быть подключен к сети Wi-Fi, иначе соответствующее имя не будет получено.
3.ANDROID_ID
Когда устройство запускается в первый раз, система случайным образом сгенерирует 64-битное число и сохранит его в виде шестнадцатеричной строки. Эта шестнадцатеричная строка — ANDROID_ID. При очистке устройства значение будет Сброс.
можно получить следующим способом:
ANDROID_ID можно использовать как идентификацию устройства, но вам нужно обратить внимание на:
1. Ошибка индивидуальной системы производителя: разные устройства могут генерировать один и тот же ANDROID_ID: 9774d56d682e549c.
2. Ошибка индивидуальной системы производителя: некоторые устройства возвращают null.
3. Различия между устройствами. Для устройств CDMA ANDROID_ID и TelephonyManager.getDeviceId () возвращают одно и то же значение.
4. серийный номер
Серийный номер можно получить с помощью следующего метода для системы Android версии 2.3 и выше, и немобильные устройства также могут получить его через этот интерфейс.
4.1 Некоторые значения, которые можно получить в android.os.Build
Непосредственно по коду:
Ниже приводится соответствующая информация, полученная Huawei Honor 9 и Xiaomi:
Serial_Num: 8BN0217919015937
Manufacturer: HUAWEI
Model: STF-AL00
Brand: HONOR
Device: HWSTF
Ниже представлена соответствующая информация о Mi 6.
Sim_SN: 89860117801033225378
Manufacturer: Xiaomi
Model: MI 6
Brand: Xiaomi
Device: sagit
5. ID установки
Принцип этого метода заключается в генерации идентификатора при первом запуске программы после установки. Этот метод отличается от уникальной идентификации устройства. Различные приложения будут генерировать разные идентификаторы, и одна и та же программа будет отличаться при переустановке. Таким образом, это не уникальный идентификатор устройства, но можно гарантировать, что идентификатор каждого пользователя отличается. Можно сказать, что он используется для идентификации уникального идентификатора каждого приложения (т.е. идентификатора установки), который можно использовать для отслеживания количества установок приложений и т. Д.
Непосредственно загрузите код:
Приведенный выше код также можно реализовать с помощью SharedPreferences:
Фактическое использование идентификаторов
Прежде всего, мы должны сначала выяснить конкретные потребности нашего оборудования для отслеживания. В настоящее время существует не более двух видов спроса:
- 1. Отслеживайте оборудование на уровне цикла использования пользовательского оборудования.
означает рассматривать устройство как новое устройство каждый раз, когда пользователь стирает данные с устройства и восстанавливает заводские настройки. - 2. Отслеживание оборудования на аппаратном уровне.
означает, что устройство следует рассматривать как то же устройство после удаления данных или восстановления заводских настроек.
1. Отслеживайте использование оборудования пользователем на уровне
Теоретически значения Android_ID нам достаточно для выполнения этого требования, но именно из-за недостатков в Android_ID мы не можем напрямую идентифицировать устройство. Здесь мы используем несколько значений, чтобы избежать этих недостатков.
Я рекомендую использовать Android_ID и серийный номер Sim для идентификаторов, связанных с жизненным циклом пользовательского оборудования. Кроме того, можно добавить Device_ID, а идентификатор устройства можно вычислить и сгенерировать с помощью UUID или MD5.
- Реализация UUID:
- Реализация MD5 (алгоритм MD5 см. Ниже):
2. Отслеживание оборудования на аппаратном уровне.
Для отслеживания устройств на аппаратном уровне рекомендуется использовать идентификаторы оборудования, такие как идентификатор устройства (DeviceId), Mac-адрес, серийный номер устройства (SN) или марка устройства, название модели и т. Д. Эти значения вводятся после того, как пользователь удалит данные или восстановит заводские настройки. Это не изменится. Точно так же, чтобы повысить стабильность и устранить дефекты одного идентификатора, мы используем несколько идентификаторов для объединения, а затем вычисляем нужный нам идентификатор устройства с помощью алгоритма UUID или MD5.
- Реализация UUID:
- Реализация MD5 (алгоритм MD5 см. Ниже):
Чтобы дополнить требуемый выше md5:
Важная вещь в реальном бою выше — это мысль.
подводить итоги
Резюме выше, я почти сумасшедший. Эта работа относительно тривиальна, без чувства системы. Свяжите один кусок и соедините вместе. Боже мой! ! !
Источник