Этот загадочный IMEI
Сегодня я бы хотел поговорить с Вами о на первый взгляд простом, но в то же время интересном моменте… IMEI и как его правильно приготовить.
Итак IMEI [International Mobile station Equipment Identity]…
Как известно, данный номер на мобильном терминале можно посмотреть с помощью комбинации *#06#. Опорная сеть GSM хранит базу IMEI в EIR и запрашивает IMEI при авторизации аппарата в сети оператора. Основные положения по IMEI/SV изложены в документе 3GPP TS 23.003. Изначально IMEI коды предполагалось использовать как еще одну меру защиты от несанкционированного использования нелегальных мобильных терминалов на сети операторов, но не все операторы стремились использовать эту функциональность, т.к. для полноценной работы идеи с Black, White и Grey базами IMEI кодов, необходима их синхронизация между всеми операторами внутри хотя бы одной страны, а финансовой выгоды от этого мероприятия для самого оператора – чуть меньше ноля…
Но не смотря на это, сетевые элементы, отвечающие за хранение и проверку IMEI кодов активно использовались в сетях мобильных операторов, например для отслеживания изменения пары значения IMEI и IMSI(MSISDN), т.е. в случае когда абонент переставлял SIM карту из одного терминала в другой, “заботливый” оператор тут же отслеживает этот момент чтобы переслать абоненту всеми любимые настройки MMS, GPRS, WAP и еще много всякой “нужной” информации…
Тем не менее, как мы с Вами знаем украинских операторов не так давно “обязали” проверять IMEI коды, хотя полноценно система так до сих пор и не работает…
Проверка легитимности использования мобильного термина в сети оператора, т.е. сопоставление самого IMEI кода с базами на стороне оператора в случае запроса пакетных услуг, производится в процессе совершения процедуры GPRS Attach – функции Check IMEI Req/Res. Более подробно об этом можно прочитать здесь.
IMEI
Общая структура IMEI кода представлена на рисунке ниже:

Составными частями являются:
- Type Allocation Code (TAC), длиной 8 символов;
- Serial Number (SNR), длиной 6 символов;
- Check Digit (CD), в случае передачи IMEI от MS в сеть оперратора, это число заменяется на 0.
Check Digit выступает в качестве контрольной суммы и рассчитывается по алгоритму Luhn (en). Методика расчета CD описана ниже.
IMEISV
International Mobile station Equipment Identity and Software Version Number (IMEISV) отличается от «обычного» IMEI наличием еще двух цифр — SVN (Software Version Number), которые заменяют собой Check Digit (CD). Общая структура IMEISV, показана на рисунке ниже:

Составными частями являются:
- Type Allocation Code (TAC), длиной 8 символов;
- Serial Number (SNR), длиной 6 символов;
- SVN (Software Version Number), длиной в 2 символа.
Поле TAC характеризует модель и производителя аппарата. SNR характеризует серийный номер самого ME. Значение SNR, назначается производителями в последовательном порядке.
Значение SVN=99, зарезервировано для будущего использования. SVN характеризует ревизию программного обеспечения, установленного на MS и меняется при перепрошивке оного. Поля TAC и SNR должны совпадать как в IMEI (14 цифр), так и в IMEISV (16 цифр).
Методика расчета Check Digit
Ниже мы с Вами попробуем рассчитать контрольное число CD для IMEI=354190023896443. Для этого нам необходимо выполнить следующие операции с нашим IMEI кодом:
- Удвоить значения цифр на четных позициях.
- Сложить вместе удвоенные числа на четных позициях и не четных позициях, при этом «раскладывая» числа на четных позициях на составляющие числа (например, 14 нужно представить как 1 и 4).
- Если конечное число заканчивается на 0, то CD = 0. В противном случае CD равно числу, которое нужно добавить к результату, полученному в пункте 2, чтобы получить следующий целый десяток.
Результаты наших расчетов представим в виде таблицы:
TAC | SNR | CD | |||||||||||||
3 | 5 | 4 | 1 | 9 | 0 | 0 | 2 | 3 | 8 | 9 | 6 | 4 | 4 |
3
|
|
x2 | 10 | 2 | 0 | 4 | 16 | 12 | 8 | ||||||||
1+0 | 2 | 0 | 4 | 1+6 | 1+2 | 8 | |||||||||
Сумма цифр, которые мы получили на последнем шаге и цифр на нечетных позициях:
|
3 + (1+ 0) + 4 + (2) + 9 + (0) + 0 + (4) + 3 + (1) + 6 + (9) + 1 +(2) + 4 + (8) = 57 | ||||||||||||||
Число, которое необходимо добавить до следующего полного десятка:
|
60 – 57 = 3 |
Хочу, отметить… что обычно на коробке при покупке аппарата указывается 15-значный IMEI вместе с CD в конце, но в сеть будет передаваться IMEI, в котором CD будет заменена на 0. Кстати, именно этот момент заставил меня более подробно узнать об IMEI кодах, т.к. возник вопрос с биллинг данными в которых заносились именно значения IMEI с 0 в конце…
На многих форумах есть описания программного изменения IMEI телефонных аппаратов разных моделей, но производители все время усовершенствуют методики хранения IMEI на своих аппаратах, поэтому с каждым новым аппаратом, изменение IMEI становиться все сложнее.
Небольшой помощник:
EIR – Equipment Identity Register
GPRS – General Packet Radio Service
IMSI – International Mobile Subscriber Identity
ISDN – Integrated Services Digital Network
MMS – Multimedia Messaging Service
MS – Mobile Station
MSISDN – Mobile Station ISDN Number
WAP – Wireless Application Protocol
Ссылки по теме (en):
Скажите, а SVN передается оператору? Из статьи не совсем ясно. Вообще об этом параметре крайне мало информации в Сети.
Судя по всему он тоже передается оператору… найти детального описания так не удалось, но судя по рейсам он все таки передается.