Как проверить правильность серийного номера sim карты ? SIM содержит информацию о сети оператора GSM. Данная информация относится к мобильному абоненту, услугам GSM или PLMN. Данные, хранящиеся в SIM, делятся на две группы категорий: обязательные и необязательные.
7.3.3.1 Обязательные данные
* Административная информация: описывает режим работы SIM, например, обычный режим или режим утвержденного типового образца (тестовый режим).
* Идентификация IC карты: уникальная информация, идентифицирующая SIM.
ICCID - международный идентификатор карты. Это уникальный физический номер карты (типа серийного заводского номера). Этот номер печатается на пластмассовой части чипа.
IccID=89701+99+010000000001 – всего 19 цифр;
Расшифровка:
расшифровка основана на рек. ITU-T Е.118:
89 - пластиковая карта для телекоммуникаций
7 - Россия (рек. ITU-T E.164)
01 - федеральная сеть GSM-900
99 – сеть оператора
01 - регион
Таблица услуг SIM: указывает, какие необязательные услуги обеспечиваются SIM (последние набранные номера, длительность соединения, выбор PLMN).
* International Mobile Subscriber Identity (IMSI): идентификационный номер, используемый сетью для идентификации абонента. IMSI=MCC+MNC+MSIN=250+99+91X1…X8;
* Информация о местоположении: LAI, которая периодически обновляется.
* Ключ шифрования (Кс)
* Порядковый номер ключа шифрования
* Последние частоты, использованные при выборе сот
* Запрещённые PLMN
* Языковая поддержка: язык, выбранный абонентом
Информация о местоположении, Kc и порядковый номер ключа шифрования Kc обновляются при обслуживании каждого входящего соединения.
Кроме того SIM позволяет администрировать вызовы и предоставлять доступ к данным в соответствии со следующими требованиями обеспечения безопасности связи:
o Personal Identification Number (PIN) – PIN код
o Индикатор активации / деактивации PIN кода
o Счетчик количества неправильно введенных PIN кодов
o PIN Unlock Key (PUK) - PUK код
o Счетчик количества неправильно введенных PUK кодов
o Ключ аутентификации абонента (Ki)
Ниже, на рис. 7.8, представлены некоторые данные, хранящиеся в SIM-карте. Данные получены с помощью измерительного комплекса TEMS Investigation компании ERICSSON
http://gsmcode.narod.ru/GSM.doc
Что бы определить реальный ли номер у сим карты нужно:
Подсчитать контрольную сумму этого номера по Алгоритму Луна:
Алгоритм проверки контрольной цифры
1. Начиная со второго числа справа через 1 (то есть 2,4,6,8,10…) делается проверка: если 2·x > 9, то из произведения вычитается 9, если 2·x ≤ 9, то произведение оставляем без изменения.
например:
4 5 6 1 2 6 1 2 1 2 3 4 5 4 6 4
8 12 4 2 2 6 10 12
8 3 4 2 2 6 1 3
2. Затем все числа складываются.
8+5+3+1 + 4+6+2+2 + 2+2+6+4 + 1+4+3+4 = 57
3. Полученная сумма должна быть кратна 10 (40,50,60,70…)
В примере: последнее число - это контрольная цифра. Для того, чтобы номер был верен в соответствии с алгоритмом Луна, контрольная цифра должна быть равна 7.
4 5 6 1 2 6 1 2 1 2 3 4 5 4 6 7
8 12 4 2 2 6 10 12
8 3 4 2 2 6 1 3
8+5+3+1 + 4+6+2+2 + 2+2+6+4 + 1+4+3+7 = 60
[править] Алгоритм вычисления контрольной цифры
Num[1..N] — номер карты, Num[N] — контрольная цифра
sum = 0
for i = 1 to N-1 do
if (i mod 2 = 0) then
p = Num[i]
else
p = 2*Num[i]
if (p > 9) then
p = p - 9
sum = sum + p
sum = sum mod 10
//дополнение до 10
sum = (10 - sum) mod 10
Num[N] = sum
Взято отсюда
Алгоритм Луна
Алгоритм Луна или формула Луна — алгоритм вычисления контрольной цифры, получивший широкую популярность. Он используется, в частности, при первичной проверке номеров банковских пластиковых карт, номеров социального страхования в США и Канаде. Алгоритм был разработан сотрудником компании «IBM» Хансом Петером Луном и запатентован (патент США № 2 950 048) в 1960 году.
В настоящее время алгоритм находится в общественном достоянии. Как уже говорилось ранее, контрольные цифры вообще и алгоритм Луна в частности предназначены для защиты от случайных ошибок, а не преднамеренных искажений данных.
Описание алгоритма
Алгоритм Луна позволяет выявить все одиночные ошибки и практически все перестановки соседних чисел в числовых последовательностях любой длины (не выявляются только перестановки нуля и девятки: «09» вместо «90» и наоборот). Более сложные алгоритмы (например, алгоритм Верхоффа) позволяют выявить большее количество ошибок.
Так как алгоритм оперирует цифрами в обратном порядке (справа налево), нули в начале числа никак не влияют на значение контрольной цифры. Таким образом, системы, дополняющие проверяемое число нулями слева до определенной длины (например, «1234» до «0000001234»), могут проводить проверку как до дополнения, так и после него.
Алгоритм Луна работает только с последовательностями десятичных цифр. Несколько модифицированный вариант, известный как «алгоритм Луна по модулю N», позволяет расширить диапазон проверяемых символов.
Порядок вычисления контрольной суммы:
1. Считая справа налево, удваиваем каждую вторую цифру последовательности.
2. Суммируем все одиночные цифры (т. е. если на предыдущем шаге мы получили 6×2=12, то суммируем 1+2).
3. Вычисляем остаток от деления полученной суммы на 10. Результат и будет контрольной цифрой. При проверке сумма должна делиться на 10 без остатка.
В качестве примера проверим правильность числа 49927398716:
1. Удваиваем каждую вторую цифру: (1×2) = 2, (8×2) = 16, (3×2) = 6, (2×2) = 4, (9×2) = 18.
2. Суммируем все цифры (цифры в скобках — произведения, полученные на предыдущем шаге): 6 + (2) + 7 + (1+6) + 9 + (6) + 7 + (4) + 9 + (1+8) + 4 = 70.
3. Остаток от деления 70 на 10 равен нулю — число введено верно.
Источник