Как узнать IMEI своего телефона или смартфона

IMEI (International Mobile Equipment Identity) расшифровывается как "международный идентификатор мобильного оборудования",- это уникальное число, которое присваивается каждому мобильному телефону, а так же некоторым спутниковым телефонам. Обычно оно отпечатано в батарейном отсеке устройства. Так же его можно вывести на экран, введя с клавиатуры последовательность *#06#. Сменить IMEI у современного телефона без перепрограммирования микросхем или их замены нельзя, так как обычно этот идентификатор зашит в микросхеме ПЗУ.

Идентификатор IMEI используется в GSM сетях для идентификации действующих в сети устройств, и следовательно по нему можно отследить украденный сотовый телефон и заблокировать его доступ в сеть. Например, если владелец украденного телефона сообщит о краже своему сотовому оператору и попросит внести аппарат в "чёрный список" по номеру IMEI, то для этой и некоторых других сетей телефон станет абсолютно бесполезен, и при этом не важно, менялась ли СИМ-карта, установленная в телефоне.

IMEI используется только для идентификации устройства, с которого осуществляется выход в сеть, он никак не относится к владельцу аппарата. Владелец определяется с помощью другого номера - IMSI (International Mobile Subscriber Identity - международный идентификатор абонента), который хранится в СИМ-карте. Теоретически идентификатор IMSI может быть подделан и использован с любыми телефонами, но во многих сотовых сетях стоит защита, например, этот идентификатор посылается во время сеанса связи очень редко во избежание его перехвата.

Идентификатор IMEI обычно содержит содержит 15 цифр. Первые восемь цифр - это идентификатор TAC, причём первые две цифры в этом TAC коде обозначают страну. Следующие шесть цифр обозначают серийный номер устройства, а последняя, 15 цифра является контрольной, с её помощью проверяется правильность всех цифр по алгоритму Луна.

Алгоритм Луна используется для проверки контрольной суммы идентификатора IMEI, он позволяет выявить все одиночные ошибки и почти все варианты перестановок соседних чисел. Исключение составляют только цифры 9 и 0, расположенные на соседних позициях, их перестановка алгоритмом не выявляется (например, если переставить смежные числа 90 и 09, то это не обнаружится).

Рассмотрим пример проверки правильности идентификатора IMEI 359223015426526, содержащего 15 цифр:

Структура идентификатора IMEI сотового телефона

1. Отбрасываем самую правую контрольную цифру - останется 14 цифр: 35922301542652
2. Считая справа налево суммируем все цифры, расположенные на чётных позициях - второй, четвёртой, шестой и т.д. - 35922301542652
3+9+2+0+5+2+5 = 26
3. Все числа меньше пяти, расположенные на нечётных позициях, следует умножить на два и сложить между собой, а если число больше четырёх, то при умножении на два из результата следует вычесть число девять:
5*2-9+2*2+3*2+1*2+4*2+6*2-9+2*2 = 28
4. Суммируем полученные результаты: 26+28 = 54
5. Получившееся число делим по модулю на десять: 54 mod 10 = 4
6. Если получился ноль, то результат равен нулю, если же полученное число больше нуля, то отнимаем это число от десяти: 10 - 4 = 6.

В этом примере мы получили число 6, которое равно контрольному числу, следовательно цифры IMEI идентификатора верны.

Онлайн проверка правильности IMEI:

Для работы необходим JavaScript !

И в заключение - пример реализации алгоритм вычисления контрольной цифры на Delphi:

function GetLuhn( Num:string):integer;
var p, sum, N, i:integer;
begin
   sum := 0;
   N := Length(Num);

   for i := 1 to N-1 do

   begin
     p := StrToInt(Num[Length(Num)-i]);
     if (i mod 2) <> 0 then

     begin
       p :=p*2;
       if p > 9 then p:=p - 9;
     end;
     sum :=sum+p;
   end;
   if ((sum mod 10) = 0) then sum:=0 else sum := 10 - (sum mod 10);
   Result:=sum;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption:=IntToStr(GetLuhn('359223015426526'));
end;

BACKHOME