Как вариант, можно обойтись вообще старым телефоном (телефон соединял с компом по bluetooth и цеплялся на виртуальный COM-порт обычным hyperterminal'ом) и AT командой AT+CRSM.
Например команда AT+CRSM=176,28448,0,0,9
читает из элементарного файла 6F20 ключ шифрования Кс.
А команда AT+CRSM=176,28536,0,0,2
читает из элементарного файла 6F78 сведения о классе доступа sim-карты.
Получается что SIM карта это вполне себе компьютер, раз у него есть и ОС и файловая система и контроль доступа и даже Java бывает. А какие приблизительно характеристики у этого компьютера? Сколько весит такая ОС? А еще интересно, какая себестоимость такой карты. Ведь операторы их практически даром раздают.
Простые карты памяти ( если правильно помню, работа с ними через картридеры не покрывается стандартом PC/SC плюс они следуют ISO7816 только до 3ей части включительно) — менее бакса, но на них нет ничего.
ACOS-ы и JAVA Card-ы всякие — чуть больше двух баксов, если брать тысячами, но думается, что ОПСОСы заказывают карты сотнями тысяч, такчто цена падает до цены куска кремния и пластика.
Отличный материал. Сам недавно возился со SMART правда не с симкой, а с чем-то наподобие карточек для метро/трамвая, метод научного тыка, конечно помог, но теперь по крайней мере понимаю где я делал правильно :)
Жду продолжения :)
У меня создаётся впечатление, что с SIM сильно перемудрили. Насколько я понимаю, изначально на ней должен был быть записан Ki + флаги. А дальше понёсся какой-то лихой и бессмысленный оверинжиниринг. Интересно, в чем причина подобного решения?
С точки зрения операторов она не лишняя.
Это возможность предложить всем своим абонентам VAS и предоставить доступ к своим сервисам. Основное преимущество карточных Java апплетов для операторов в контролируемости этих преложений и возможности донести их до максимального числа абонентов.
Кроме того Java позволяет унифицировать приложения — однажды разработанный апплет может, в общем случае, работать на картах разных вендоров. По сравнению с этим, нативные (не Java, а C или ASM) приложения, которые разрабатываются, как правило, самими вендорами, представляют, как правило, много больший геморой по срокам внедрения.
Кроме того Java, как раз, не обязательный атрибут карты — надо смотреть на рыночное предназначение карт.
Интересующиеся могут почитать, кроме стандарта ISO/IEC 7816 с базовой информацией о симкартах, который, кстати, есть на русском языке, но и 3GPP 11.11, в нём подробно описывается взаимодействие Subscriber Identity Module и Mobile Equipment (файловая система, протокол команд и многое другое, в том числе и ссылки на кучу других спецификаций).
RUIM не пробовал, а USIM — да. Здесь я принципиально не стал касаться USIM, чтобы избежать ненужных усложнений, поскольку кардинально нового (по сравнению с изложенным) в них нет, просто эволюционные изменения, более системный подход к разработке спецификаций.
Но и самих спек больше и прыгать между ними нужно чаще (это в минусы).
Смарт-карты для самых маленьких