Как работать с сим-картами (Установка апплета)
У меня есть смарт-карта со следующим ATR:
ATR = 3B 9E 94 80 1F 42 80 31 00 73 BE 21 10 66 54 59 53 04 4C 25 CF
,
Основываясь на результатах https://smartcard-atr.appspot.com/parse?, я обнаружил, что это SIM-карта MCI (Компания мобильной связи Ирана).
Это информация, которую я получил от Historical Bytes:
(компактный объект данных TLV)
Tag: 3, Len: 1 (байт данных обслуживания карты)
Байт данных обслуживания карты: 0
Службы доступа EF.DIR и EF.ATR: по команде GET RECORD(s)
Карточка с MF
Tag: 7, Len: 3 (возможности карты)
Методы выбора: 190
Номер записи поддерживается
Поддерживается короткий EF-идентификатор
Неявный выбор DF
Выбор DF по идентификатору файла
Выбор DF по пути
Выбор DF по полному имени DF
Байт кодирования данных: 33
Поведение функций записи: собственность
Значение 'FF' для первого байта полей тега BER-TLV: допустимо
Блок данных в квартетах: 1
Цепочка команд, поля длины и логические каналы: 16
Назначение номера логического канала: по карте
Максимальное количество логических каналов: 1
Метка: 6, Лен: 6 (предварительные данные)
Данные: 54 59 53 04 4C 25 "TYS.L%"
Как вы видите выше, упоминается, что карта имеет MF
,
Проблема в том, что я ничего не могу сделать с этой картой. На первом этапе я хочу перечислить его содержимое. Я ознакомился со спецификациями TS 11.11, TS 102.221,TS 131.102 и TS 151.011.
Насколько я понимаю из приведенных выше документов системный файл карты состоит из Master File
что его помощь 3F00
и некоторые DF-ы и EF-ы. Например, основываясь на приведенной ниже таблице спецификации TS 151.011, я попытался выбрать несколько DF-ов:
Вот результаты:
Connected to RTP CCID USB Reader 0
ATR: 3B 9E 94 80 1F 42 80 31 00 73 BE 21 10 66 54 59 53 04 4C 25 CF
> APDU
> A0 A4 04 00 02 5F 30
< 6A 82
> APDU
> A4 A4 04 00 00
< 6E 00
> APDU
> A0 A4 04 00 00
< 67 00
> APDU
> 00 A4 04 00 00
< 61 13
> APDU
> 00 C0 00 00 13
< 6F 11 84 09 A0 00 00 00 62 03 01 08 01 A5 04 9F 65 01 FF
< 90 00
> APDU
> 00 A4 04 00 09 A0 00 00 00 62 03 01 08 01
< 61 13
> APDU
> A0 A4 04 00 09 A0 00 00 00 62 03 01 08 01
< 6E 00
> APDU
> 00 A4 04 00 09 A0 00 00 00 62 03 01 08 01
< 61 13
> APDU
> 00 C0 00 00 13
< 6F 11 84 09 A0 00 00 00 62 03 01 08 01 A5 04 9F 65 01 FF
< 90 00
> APDU
> 00 A4 04 00 02 3F 00
< 6A 82
> APDU
> A0 A4 04 00 02 3F 00
< 6E 00
Как вы видите выше, я потерпел неудачу со всеми из них, и я смог найти только ПОМОЩЬ ISD.
Я также пытался составить список содержимого с помощью инструмента GlobalPlatformPro, но кажется, что карта не поддерживает команду APDU Initial Update:
C:\Users\User\Desktop\today>java -jar gp.jar -visa2 -key 47454D5850524553534F53414D504C45 -unlock -list -v -d -i
# Detected readers from SunPCSC
[*] RTP CCID USB Reader 0
SCardConnect("RTP CCID USB Reader 0", T=*) -> T=0, 3B9E94801F4280310073BE211066545953044C25CF
SCardBeginTransaction("RTP CCID USB Reader 0")
Reader: RTP CCID USB Reader 0
ATR: 3B9E94801F4280310073BE211066545953044C25CF
More information about your card:
http://smartcard-atr.appspot.com/parse?ATR=3B9E94801F4280310073BE211066545953044C25CF
A>> T=0 (4+0000) 00A40400 00
A<< (0019+2) (249ms) 6F118409A00000006203010801A5049F6501FF 9000
Auto-detected ISD AID: A00000006203010801
***** Card info:
A>> T=0 (4+0000) 80CA9F7F 00
A<< (0000+2) (73ms) 6A86
GET DATA(CPLC) returned SW: 6A86
NO CPLC
***** CARD DATA
A>> T=0 (4+0000) 80CA0066 00
A<< (0000+2) (81ms) 6E00
NO CARD DATA
***** KEY INFO
A>> T=0 (4+0000) 80CA00E0 00
A<< (0000+2) (82ms) 6E00
A>> T=0 (4+0000) 00CA00E0 00
A<< (0000+2) (60ms) 6E00
GET DATA(Key Information Template) not supported
A>> T=0 (4+0008) 80500000 08 FE44F8E8DF60349B 00
A<< (0000+2) (61ms) 6D00
pro.javacard.gp.GPException: INITIALIZE UPDATE failed SW: 6D00
at pro.javacard.gp.GlobalPlatform.check(GlobalPlatform.java:1092)
at pro.javacard.gp.GlobalPlatform.openSecureChannel(GlobalPlatform.java:398)
at pro.javacard.gp.GPTool.main(GPTool.java:371)
C:\Users\User\Desktop\today>
Я хочу знать, что не так? Как я могу установить апплеты Java-карты на эту SIM-карту?
Обратите внимание, что я уже успешно работал с Java Card, но я совершенно запутался в подобных SIM-картах. Я ценю, что любой мог пролить свет на этот вопрос. С уважением.
2 ответа
Если вы получаете карту с рынка (а не свою собственную карту разработки), установить апплет на нее практически невозможно, так как вы не знаете набор ключей ее ISD. Это сделано для того, чтобы предоставить только эмитенту карты и владельцу карты (MNO) полный контроль над содержимым SIM-карты.
Другое возможное объяснение состоит в том, что не все SIM-карты полностью поддерживают GP или Javacard. Существуют SIM-карты, которые соответствуют только стандарту 2G/3G/4G (GSM 11.11, 11.14, 102.222 и т. Д.), Чтобы его пользователь мог проходить аутентификацию только в сети. Такая SIM-карта может также иметь приложение STK, но не обязательно реализована как апплет javacard.
Согласно вашему последнему журналу команды Initialize Update, могут быть некоторые возможности: 1. Scp02/Scp03 не поддерживается на вашей карте, меньше возможностей, если он поддерживает GP. 2. ISD не настроен с параметрами, поддерживаемыми SCP. 3. Существует еще один защищенный канал, ранее действовавший в том же логическом канале на карте.
На мой взгляд, могут быть последние 2 варианта.
Чтобы проверить 3-й, вы должны попытаться запустить Scp02 с помощью следующего набора шагов: 1. Отправить холодный сброс (PowerON-Power-OFF) 2. Выбрать ISD 3. Отправить команду Initialize Update.
Если это не работает, вам нужна информация о параметрах приложения ISD, и по этим параметрам вы можете определить, поддерживает ли ISD SCP02/03 или нет?
Эти параметры могут быть такими: "C9 04 81 02 XX YY" (здесь поддерживается SCP с поддержкой XX и значение "Y" для параметра YY для SCP).