Фазы развития стандарта GSM и таблица услуг, предоставляемых SIM-картой

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

Для обеспечения совместимости как с предыдущими (совместимость «назад»), так и с последующими (совместимость «вперед») поколениями мобильных телефонов и карт, не говоря уже о сетях, необходимо, чтобы и телефоны', и карты могли обмениваться друг с другом информацией о своих возможностях.

Основные этапы развития стандарта GSM идентифицируются последовательными фазами. Фаза 1 соответствует упрощенному стандарту GSM в том его виде, который отвечал необходимости запуска еще не до конца разработанной системы (см. главу 1). Фаза 2 относится к более полной системе, которая уже смогла привлечь столь большое число новых пользователей мобильной связи.

На момент написания этой книги фаза 2+ системы GSM является коммерческой реальностью, и все говорит о том, что на этом дело не остановится.

Именно мобильный телефон должен адаптироваться к возможностям карты, считывая в моменты, следующие за включением напряжения, байт фазы SIM-карты. Этот байт, записанный в файле 7F20:6FAE, имеет значение 02 в случае фазы 2 или 03 в случае фазы 2+. Подразумевается, что фаза 1 имеет значение 00 по умолчанию, поскольку само наличие файла «Фаза» обязательно только начиная с фазы 2.

Это один из тех редких файлов, который можно считывать без представления конфиденциального кода, просто выполнив после сброса три следующих команды:

АО А4 00 00 02 7F 20 АО А4 00 00 02 6F АЕ АО ВО 00 00 01

Таким образом можно увидеть, как получается отчет 67 00 (вместо 90 00) при попытке прочитать более одного байта (превышение длины файла).

Если иметь в своем распоряжении образец карты фазы 1, то можно получить, начиная со второй команды, отчет 94 04, говорящий о попытке выбрать файл, который не существует.

Более глубокий анализ возможностей SIM-карты предполагает расшифровку содержимого файла с адресом 7F20.6F38, носящего название «Таблица услуг, предоставляемых SIM-картой» - SST (SIM Service Table).

Основные возможности системы GSM сводятся к некоторому числу услуг, каждая из которых может быть доступной или нет и активированной или дезактивированной.

Список таких услуг остается открытым, что позволяет постоянно разрабатывать новые возможности, не дожидаясь появления новой фазы.

Для каждой SIM-карты существует таблица SST, в которой детально представлены услуги, потенциально поддерживаемые картой, а также указано, активированы они или нет.

Таким образом, оператор мобильной связи может постепенно предлагать новые возможности своим клиентам, просто активируя услуги, которые дожидались своей очереди на карте. При этом необходимости в замене карты может даже и не возникнуть.

В табл. 5.1 показано, как организована подобная таблица SST, где каждый байт соответствует четырем услугам.

Понятно, что длина этого файла может меняться от одной SIM-карты к другой, и он будет тем длиннее, чем современнее и мощнее карта.

Считывание таблицы SST требует предварительного представления (или, что более удобно, дезактивирования) кода PIN (CHV1), а запись кода администратора ADM1.

Таблица 5.1. Структура таблицы услуг, поддерживаемых SIM-картой (7F20:6F38)

1 b2 b1 Услуга 1: Отключение функции CHV1 (PIN1)
b4 Услуга 2: Ускоренный набор номера (ADN)
b6 b5 Услуга 3 : Набор фиксированных номеров (FDN)
b8 b7 Услуга 4: Хранение коротких сообщений (SMS)
2 b2 b1 Услуга 5 : Извещение о стоимости разговоров (АоС)
b4 Услуга б : Возможность конфигурации параметров (ССР)
b5 Услуга?: Выбор PLMN
b8 b7 Услуга 8 : Подадрес стороны
3 b2 b1 Услуга 9 : MSISDN
Ь4 Услуга 10: Расширение 1
b6 b5 Услуга 11: Расширение 2
b8 b7 Услуга 12 : Параметры SMS
4 b2 b1 Услуга 13: Последний набранный номер (LND)
b4 Услуга 14: Идентификация соты, передающей сообщение
b6 b5 Услуга 15:1-й уровень группы идентификации
b8 b7 Услуга 16: 2-й уровень группы идентификации

Таблица 5.1. Структура таблицы услуг, поддерживаемых SIM-картой (7F20:6F38j (окончание)

5 b2 b1 Услуга 17: Наименование службы провайдера
b4 b3 Услуга 18 : Служба набора номеров (SDN)
b6 b5 Услуга 19: РасширениеЗ
b8 b7 Услуга 20: RFU
6 b2 b1 Услуга 21: Список идентификаторов группы VCGS (EF VGCS nEFVGCSS)
b4 b3 Услуга 22 : Список идентификаторов группы VBS (EF VBS nEFVBSS)
b6 b5 Услуга 23 : Услуга расширенного многоуровневого приоритета и прерывания обслуживания eMLPP
b8 b7 Услуга 24 : Автоматический ответ для eMLPP
7 b2 b1 Услуга 25 : Загрузка данных через SMS-CB
b4 Услуга 26 : Загрузка данных через SMS-PP
b6 b5 Услуга 27 : Выбор меню
b8 b7 Услуга 28 : Управление вызовом
8 b2 b1 Услуга 29 : Proactive SIM
b4 b3 Услуга 30: Диапазоны идентификации соты, передающей сообщение
b6 b5 Услуга 31: Запрет набора номеров (BDN)
b8 b7 Услуга 32 : Расширение 4
9 b2 b1 Услуга 33 : Деперсонализация управляющих ключей
b4 Услуга 34 : Список объединенных сетей
b6 b5 Услуга 35 : Отчеты о статусе коротких сообщений
b8 b7 Услуга 36 : Индикация в сети об аварийной ситуации на мобильной станции (MS)
10 b2 b1 Услуга 37: Управление короткими сообщениями, исходящими от мобильной станции, при помощи SIM-карты
b4 Услуга 38: GPRS
b6 b5 Услуга 39 : Изображение (1Мб)
b8 b7 Услуга 40 : Поддержка услуг местной сети (SoLSA)
11 b2 b1 Услуга 41: USSD-объект строковых Данных, поддерживаемый в управлении вызовом
b4 Услуга 42 : Команда RUN AT COMMAND

Примечание к таблице:

1. b - обозначает определенный разряд в соответствующем байте:
b8 = 128
b6 - 32
b4 - 8
b2 = 2
b7 - 64
Ь5 = 16
Ь3 = 4
b1 - 1

2. RFU (Reserved for Future Use) - зарезервировано для будущего использования

Когда это сделано, с помощью двух следующих команд выбирают таблицу:

АО А4 00 00 02 7F 20 АО А4 00 00 02 6F 38

Например, для того чтобы прочитать пять первых байт (но их может быть и больше), нужно набрать: АО ВО 00 00 05

В каждом байте каждая услуга соответствует двум битам, принимающим следующие значения:

• 00 - услуга отсутствует и, естественно, не действует;

• 01 - услуга имеется на карте, но не действует;

• 11 - услуга активирована и, естественно, имеется на карте.

Сочетание 10 явно неправомерно, поскольку оно подразумевает активирование несуществующей услуги.

На рис. 5.2 подробно представлено содержимое двух карт с предварительной оплатой, выпущенные оператором 208-01 в 1998 и Д999 году соответственно.

Считывая пятый байт каждой из карт, можно заметить, что услуга 18 (номера услуг) была добавлена и активирована в промежуток времени, разделяющий выпуск обеих карт. Это позволяет проследить эволюцию возможностей мобильных телефонов, где более поздние модели предлагают отдельное меню для номеров специальных услуг, которые не могут быть изменены владельцем (служба сообщений, служба клиентов и т.д.).

Конечно, для практического использования этой возможности необходимо, чтобы она поддерживалась мобильным телефоном. Например, именно так и будет, если карту, выпущенную совсем недавно, вставить в телефон модели «МСТ Vibreur» фирмы Sagem, но не предыдущей версии (где вибратор отсутствует) того же самого мобильного.

И наоборот, если вставить карту давнего срока выпуска в мобильный телефон самой последней модели, то соответствующее меню SERVices OPERateur (Услуги операторов) останется в скрытом виде, поскольку из таблицы SST телефону сообщается, что данная карта не поддерживает соответствующую услугу.

Таким образом, вы можете поупражняться в обнаружении различий, существующих между картами, таблицы услуг SST которых содержат следующее:

• оператор 208-10, год выпуска 1998: DF 3D DF 5F 3D;
• оператор 208-10, год выпуска 1999: FF ЗС FF 7F 3D;
• оператор 228-01, год выпуска 1999: FF 3F FF FF 03.

Декодирование первого байта ее таблицы услуг SST (FD 3F FF 0F) показывает, что услуга 1 (отключение PIN-кода) не активирована. Иными'словами, это означает, что пользователь не может отказаться от той степени защиты (иногда излишней), которую ему гарантирует обязательное представление его конфиденциального кода при каждом включении мобильного.

Только оператор, выдавший карту, может под контролем кода администратора ADM1 изменить таблицу услуг SST таким образом, чтобы разблокировать эту возможность.

Естественно, нет смысла обсуждать здесь каждую из услуг SST, но тем не менее некоторые из них заслуживают подробного рассмотрения.

Так, например, услуга 15 связана с наличием на SIM-карте файла под названием GID1 (7F20: 6F3E). Он служит в основном для «запирания» (SIMlocking - блокировка подключения другой SIM-карты) некоторых субсидированных мобильных телефонов. Это относится не к отдельной SIM-карте (идентифицированной ее номером IMSI), а к семейству SIM (имеются в виду некоторые серии карт с предварительной оплатой, которые выпускаются конкретным оператором).

Поэтому в файле GID1 на определенных картах с предварительной оплатой, выпускаемых оператором 208-01, можно встретить эквивалент текста ASCII «МО01» или «МО02» в шестнадцатеричном формате.

Поскольку число байтов GID1 (также как и GID2) строго не определено, воспользуемся возможностью, возникающей при его считывании, чтобы слегка коснуться (так как это довольно сложно) вопроса заголовков файлов.

До сих пор не рассматривался отчет, отправляемый последней командой SELECT и предназначенный для отбора представляющего интерес файла.

Так как всегда предполагается, что код CHV1 представлен или нейтрализован (дезактивирован), начнем с выбора файла GID1:

АО А4 00 00 02 7F 20 АО А4 00 00 02 6F ЗЕ

Если файл 7F20:6F3E на карте отсутствует (и это не редкость), то мы получим отчет 94 04 (файл не существует).

Предположим, что результатом этого действия будет отчет 9F 0F, означающий, что 15 (OFh) байт заголовка могут быть считаны при помощи команды Get Response (операционный код СО). Поэтому перед любой другой командой (это важно) необходимо выполнить: АО СО 00 00 0F

Например, при использовании упоминавшейся выше карты (оператора 208-10) 1998 года выпуска можно получить в сопровождении отчета 90 00 следующий ответ: 00 00 00 03 6F ЗЕ 04 00 14 FF 44 01 01 00 00

Рис. 5.3 поможет расшифровать его содержание. Поскольку речь идет о файле типа EF, сразу можно увидеть, что получение в ответ 15-ти байт вполне нормально. В байтах 5 и 6 (IDENT) находится идентификатор рассматриваемого файла (6F ЗЕ для GID1).

Байты с 1 по 4 (SIZE, размер) указывают общее число байтов файла (в данном случае 3), в то время как байт 14 показывает, что дело касается «прозрачного» файла (самый простой случай). В случае, например, линейного файла, байт 15 уточняет длину (LENGTH) каждой записи, что позволит вычислить число всех записей путем простого деления SIZE/LENGTH (размер/длина).

Байт 7 (TYPE, тип) подтверждает, что речь действительно идет о файле ЕЕ Оставшаяся часть ответа карты уточняет условия доступа и состояние файла (правомочный или недействительный). Эти детали еще более сложны и обеспечиваются программами, специализирующимися на работе с SIM-картами.

Именно таким образом можно, в частности, узнать, каким кодам подчинено считывание и/или запись в файле, но еще проще сделать собственные пробы.

В свете того, о чем было только что сказано, можно без колебаний приступить к прочтению трех байт, расположенных в GID1:

АО ВО 00 00 03

Полученный ответ (ff ff ff) дает основания думать, что мобильный телефон, проданный с этой картой, был закодирован не файлом GID1. Это предположение может быть проверено, если вставить в телефон другую карту того же типа, которая действительно будет отторгнута.

Выяснилось, что рассматриваемая карта МО01, напротив, может быть использована в мобильном телефоне, проданном с картой МО02, при этом кода «отпирания» не требуется, так как разные операторы вряд ли могут применять сильно отличающиеся варианты кодирования.

Само наличие некоторых услуг SST возможно только в том случае, если карта соответствует фазе 2+ (03h), поддерживает «SIM Toolkit» (STK) или является картой «Proactive SIM».

При выполнении указанных условий SIM-карта распознает команду «Terminal Profile», которая, в свою очередь, может быть послана только мобильным телефоном, совместимым с «Фазой 2+». В противном случае SIM-карта возвратит отчет 6D00, сообщающий о том, что команда неизвестна.

Указанная команда, обычно выполняемая один единственный раз при инициализации телефона, имеет формат АО 10 00 00 LEN и содержит поле данных, длина, которого (LEN) зависит от степени «продвинутости» телефона. Каждый бит поля данных соответствует конкретной функции, которую мобильный телефон может (бит установлен в 1) или не может (бит установлен в 0) выполнить по лапросу SIM-карты:

Байт 1 :

Бит 1 : Загрузка Profile
Бит 2 : Загрузка данных SMS-PP
Бит 3 : Загрузка данных, передаваемых сотой
Бит 4 : Выбор меню

Байт 2 :

Бит 1 : Результат выполнения команды
Бит 2 : Управление вызовом при помощи SIM-карты

Байт 3 (Proactive SIM):

Бит 1 : Текст дисплея
Бит 2 : Получить Inkey
Бит 3 : Получить вход в сеть
Бит 4 : Дополнительное время
Бит 5 : Воспроизведение тональности
Бит 6 : Опрос интервала
Бит 7 : Выключение опроса
Бит 8 : Обновление

Байт 4 (Proactive SIM) :

Бит 1 : Выбор строки
Бит 2 : Послать короткое сообщение
Бит 3 : Послать SS
Бит 4 : Послать USSD
Бит 5 : Настройка вызова
Бит 6 : Настройка меню
Бит 7 : Предоставить местную информацию (Биты, не указанные в списке, зарезервированы для использования в будущем).

В качестве упражнения попытайтесь декодировать «Terminal Profile» (of 03 ff F7), находящийся в файле STK.LOG, который содержится в каталоге BASICSIM на прилагаемом компакт-диске.

В главе 4* было описано, каким образом этот файл можно записать на SIM-карту из комплекта «BasieSIM», вставленную в мобильный телефон, совместимый с «Фазой 2+».

Отдельно следует отметить, что функция «Послать USSD» необходима для использования некоторых дополнительных функциональных возможностей (например, отправки SMS) карты GSM CARD easyRoam, описанной в главе 2.

В некоторых последних моделях мобильных телефонов биты, ранее зарезервированные для использования в будущем («RFU»), в настоящее время начинают устанавливаться в «1».