SIM карта
Семён сохраняет полезное_)
Продолжаем тему с алгоритмами и работой LTE модема.
В посте выше мы уже говорили что на самых начальных этапах модем читает данные из SIM карты. Что такое SIM карта? Subscriber Identification Module — модуль идентификации абонента. SIM карта это лишь разновидность карты ISO 7816, к которым относятся и обычные контактные банковские карты.
Изначально sim карта имела размер как у банковской карты(если вы покупали sim-карту то видели пластиковую карту на которой была перфорация маленькой сим-карты.
То что мы привыкли называть SIM-картой это Mini-SIM. Тоже как и размер выше уже полностью вышли из современных смартфонов и перешли лишь в сферы IOT и промышленных применений или вовсе роутеров.
Далее был формат Micro-SIM Nano-SIM. Они теперь доминируют на рынке.
И так прочитаем с помощью ридера карт(в моем случае это ридер на базе Alcor Micro AU9540). Если вам будет интересно самому почитать содержимое то ридерами на его базе завалены маркетплейсы.
С помощью проекта "pysim" прочитаем и далее разберем содержимое sim карты.
sudo ./pySim-read.py -p0

Мы получили вывод изображенный на скриншоте выше.
Разберем поля:
ICCID - уникальный серийный номер SIM-карты. Обычно именно этот код печатается на SIM-карте. ICCID определяется в соответствии со стандартом ITU-T E.118. В соответствии с этим стандартом длина ICCID — 19 цифр (ICCID SIM-карт может иметь длину в 20 цифр):
- Идентификационный номер эмитента (до 7 цифр):2 цифры — Major Industry Identifier (идентификатор индустрии, по ISO/IEC 7812-1), для SIM-карт всегда 89;
- 2-3 цифры — телефонный код страны (по E.164), 701 для России;
- 1-4 цифры — код эмитента;
- 11 или более цифр — определяются оператором при производстве карты по внутренним правилам;
- 1 цифра (последняя) — контрольная цифра, вычисленная по алгоритму Луна от всех остальных чисел.
IMSI - уникальный идентификатор абонента мобильной связи, который хранится на SIM-карте и используется для идентификации пользователя в сети.
GID1 и GID2 - идентификатор группы, используемых для определения группы пользователей или услуг.
SMSP - центром отправки SMS.
SPN - поле, содержащее удобочитаемое название сети. Это то самое поле что показывает телефон рядом со шкалой уровня сигнала или в настройках.
PLMNsel - определяет предпочтительные PLMN пользователя в порядке приоритета.
OPLMNwAcT - Это список PLMN, с которыми у оператора есть соглашение о роуминге, в порядке очередности и с учетом технологии доступа.
Оператор может подключаться к оператору X, но разрешать доступ только к UTRAN например.
HPLMNAcT - Содержит в порядке приоритета коды Home-PLMN с указанной технологией доступа. То есть к какой технологии(GSM или LTE).
ACC - допускает значения от 0 до 15 и определяет класс контроля доступа абонента.
В ряде стран значения ACC используются для ограничения доступа гражданских лиц к сетям сотовой связи во время чрезвычайных ситуаций.
Обычные абоненты имеют номера доступа в диапазоне от 0 до 9. Пользователям с более высоким приоритетом предоставляются номера 12-14.
Во время чрезвычайной ситуации некоторые или все классы доступа в диапазоне от 0 до 9 отключаются.
Это означает, что обслуживание может быть отключено для населения, у которого значение ACC равно 0-9, но у таких людей, как службы экстренного реагирования и службы экстренной помощи, значение ACC выше, и сеть позволит подключиться. В ряде стран именно этот механизм используется для блокировки доступа к сети.
MSISDN - Международный телефонный номер абонента мобильной станции. Телефонный номер абонента в формате E.164.
Это необязательно, так как при переносе он может быть перезаписан, поэтому он не всегда совпадает.
Administrative data - Как и поле ACC, поле AD позволяет операторам запускать тестовые сети без подключения к сети действительных платных абонентов.
Определены следующие уровни:
’00’ - нормальная работа.
"80" - операции по утверждению типа.
"01" - нормальная работа + специальные возможности.
"81" операции по утверждению типа + специальное оборудование.
"02" техническое обслуживание (в автономном режиме).
’04’ эксплуатация испытательной ячейки.
SIM Service Table - Доступные услуги у SIM карты.
Также при работе с SIM картой используются следующие параметры:
ECC (Emergency Call Codes) - Коды длиной до 6 цифр абонент может набирать с главного экрана / в экстренных ситуациях / без проверки подлинности и т.д.
FEHPLMN (Equivalent HPLMN) - Используется для определения эквивалентных HPLMN, например, если две несущие объединяются и все еще имеют два PLMN.
FPLMN (Forbidden PLMN list) - Список PLMN, доступ к которым абоненту запрещен.
HPLMN (Период поиска по PLMN с более высоким приоритетом) - Сколько времени в секундах требуется для переключения между каждой технологией PLMN/Access в списке HPLMNwAcT.
OP – Код оператора
Код оператора – одинаков для всех SIM-карт от одного оператора.
Используется в сочетании с K в качестве входных данных для криптографической генерации аутентификации/авторизации.
Поскольку код оператора является общим для всех абонентов сети, восстановление этого ключа может привести к проблемам с безопасностью, поэтому обычно используется OPc.
OPc – Код оператора (производный).
Чтобы присваивать каждому SIM-коду код оператора, можно предварительно вычислить производный код оператора, когда SIM записан с ключом K.
PIN и PUK-коды - это коды для разблокировки карты. Если вы слишком часто вводите неправильный PIN-код, вам понадобится более длинный PUK-код, чтобы разблокировать карту.
В эти поля можно вводить данные (при авторизации на карте), но не считывать их напрямую, а только проверять. (Вы можете попробовать ввести PIN-код, но вы также не сможете увидеть, какой именно он установлен).