?

Log in

dump -0f - /dev/mind
Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов
GSM: продолжение рассказа про SIM-карту (SIM-ME interface, SIM-Toolkit API, JavaCard API) 
13th-Nov-2006 10:59 am
Заказной пост для egorfine: "Сим-карта может содержать какую-то хернюшку программную, которая появляется в меню моего телефона и может выполняться, если я с бодуна в нее ткну. Меню развлечений какое-то или еще какая рвота. :) Так вот вопрос. В каких кодах разработана эта фигнюшка, что она спокойно готова выполняться как на смартфоне нокия под симбианом так и под тупой мабилой от мотороллы на совсем другом процессоре, например?"
... и для avnik: "Я подозреваю что там какой то аналог RPC --- команда с параметами скармливается по шине, и получается результат"

ОК, углубимся в детали того, что бывает в потрохах SIM-карты и как она взаимодействует с телефоном.

Как я уже говорил, SIM-карта представляет собой мелкий компьютер с ограниченой функциональностью и строго специфицированным внешним интерфейсом. Через этот интерфейс SIM-карту "дергает" телефон, который является для SIM-карты единственным окном во внешний мир.

Как правильно угадал avnik, интерфейс между телефоном (ME) и SIM-картой представляет собой что-то вроде RPC с ограниченым набором функций. Если быть точным, то в базовом API SIM-карты GSM Phase 1 их (функций) всего 17 штук (раздел 8 стандарта GSM 11.11). Большая их часть отвечает за навигацию по памяти SIM-карты и модификацию значений EF (elementary files). Кроме этого есть еще функция "RUN GSM ALGORITHM" (выполнение пресловутых алгоритмов A3/A8) и функция "SLEEP", которая не используется в GSM Phase 2 :)

Естественно, что GSM-операторы очень быстро сообразили, что было бы очень неплохо иметь SIM-карты "не такие, как у всех". Это, типа, дает конкурентное преимущество и все такое. Опять же, таким образом можно облегчать глупым пользователям доступ к value-added сервисам. Теперь не прийдется запоминать, что секс по телефону живет по номеру XYZ - в меню телефона будет пункт "секс по телефону", который будет инициировать дозвон "куда надо".

И вот где-то в начале девяностых спецификация на интерфейс между SIM и ME была расширена и туда были добавлены функции, обеспечивающие работу того, что обычно называют термином "SIM Toolkit".

По-просту говоря, SIM Toolkit - это приложение (-ия), работающее на SIM-карте и взаимодействующие с ME по интерфейсу, описанному в GSM 11.14.

Такие приложения могут:
- показывать текст на экране ME
- инициировать посылку SMS/звонок/USSD-посылку на номер телефона, хранящийся на SIM-карте
- пискнуть в динамик
- вести диалог с пользователем ("Are you sure (Y/N)?")
- получать информацию извне с помощью SMS или Cell Broadcast и сохранять ее на SIM-карте
- предоставлять дополнительные меню, отображаемые ME
- модифицировать номера исходящих звонков или запрещать определенные звонки.

Учитывая, что специфицирован и стандартизирован только интерфейс SIM-ME, а сами приложения выполняются внутри SIM-карты, не имеет никакого значения, как именно и на чем они написаны.

Первые SIM-карты с STK содержали "статический" набор приложений, изменить которые можно было только поменяв саму SIM-карту. Понятное дело, что аппетит приходит во время еды, и очень скоро операторы поняли, что возможность менять STK "на ходу" - это наше всё. Но для реализации этой возможности надо было "открыть" процесс написания софта для SIM-карт и дать возможность независимым поставщикам писать приложения для SIM-карт, что явно было не по нраву производителям SIMок.

Решением стало появление SIM-карт, способных выполнять сильно обрезанную JVM (Java Virtual Machine) и создание спецификации JavaCard, позволившее третьим фирмам писать applet-ы для таких SIM-карт. В настоящий момент на рынке уже существует несколько моделей SIM-карт с немерянными объемами свободнй памяти - 32K или 64К, что позволяет разместить на них 2-3-4-5 апплетов.

PS
А для окончательного расширения горизонтов сознания поищите в Google-е слова "How to turn SIM card into Web Server" :)

Литература:
Comments 
13th-Nov-2006 09:39 am (UTC)
> Решением стало появление SIM-карт, способных выполнять сильно обрезанную JVM (Java Virtual Machine)

Я в шоке =)
13th-Nov-2006 10:06 am (UTC)
Поищи в интернете "How to Turn a GSM SIM into a Web Server" ....
13th-Nov-2006 03:46 pm (UTC)
В шоке =)
13th-Nov-2006 12:51 pm (UTC)
+ещё один в шоке %)
13th-Nov-2006 09:05 pm (UTC)
+1. Весьма удивлён.
13th-Nov-2006 11:01 am (UTC)
Ох, что может быть кастрированней чем j2me...
13th-Nov-2006 12:44 pm (UTC)
Рекомендую таки качнуть спецификацию JavaCard с Сана и увидеть, что такое действительно кастрированная java.
14th-Nov-2006 07:29 am (UTC)
А для окончательного расширения горизонтов сознания поищите в Google-е слова “How to turn SIM card into Web Server”

Насколько я понял из этого докýмента, весь функционал, существенный для web-сервера, в конфигурации, которую ребята собрали, выполнялся все-таки не SIM-картой, а специальным proxy. SIM-карта же просто принимала, интерпретировала и отвечала на специально сформированные SMS-ки.
23rd-Nov-2006 12:33 am (UTC)
мегаспасибо. опухнул на месте!
15th-Feb-2007 01:42 pm (UTC)
Anonymous
привет!
очень интересует техника позволяющия слушать разговоры по моб телефону...
если есть информация о принципе её роботы и технической степини сложности с благодарностью прочитаю.
17th-May-2009 01:17 pm (UTC)
Anonymous
в настоящее время многие вендоры SIM-карт уже выпускают их с объемом памяти 256К, что годиться уже для размещения "сносных" апплетов. на 32К разместить что-то кроме простой STK-меню или апплета присылающего настройки WAP/GPRS вряд ли возможно.
25th-Nov-2010 02:46 am (UTC)
Anonymous
Есть ли возможность абененту "Выключить" дополнительную функциональность сим карты? Понизить её протокол.

17th-Dec-2010 06:06 am (UTC) - Понизить протокол.
Anonymous
Если ME (читай телефон) не умеет поддерживать GSM 11.14 SIM Toolkit
то в процессе инициализации ME сообщает об этом SIM и она ME по этому
вопросу более не беспокоит.

Короче говоря нужно сделать так, чтобы мобильник не говорил SIM
что он умеет поддерживать SIM Toolkit.

This page was loaded Mar 23rd 2017, 4:45 pm GMT.