Как сделать INITIALIZE_UPDATE на смарт-карте?
Новое на смарт-карте здесь, информация о том, как взаимодействовать с смарт-картой, довольно разбросана по сети...
Я посмотрел на API GlobalPlatform и попробовал их пример, но я не понимаю, как JavaCard
материал может в конечном итоге привязываться и взаимодействовать с реальным кард-ридером... поэтому я в конечном итоге использую javax.smartcardio
и я могу получить ATR, а затем я выполнил следующую команду, чтобы попытаться получить домен безопасности: 00 A4 04 00 06 A0 00 00 01 51 00 00
И я получаю это обратно как ResponseAPDU: 6F408407A0000001510000A535732F06072A864886FC6B01600C060A2A864886FC6B02020201630906072A864886FC6B03640B06092A864886FC6B0403709F6501FF
Затем я пытаюсь отправить INITIALIZE_UPDATE
команда, которая 80 50 00 00 08 00 00 00 00 00 00 00 00
после этого считыватель карт мигает добрые 45 секунд до 1 минуты и в итоге возвращается SW: 9000
Однако в ResponseAPDU ничего не было...
Из того, что я прочитал, я должен получить некоторые разнообразные данные и т.д., чтобы я мог продолжить инициализацию карты... Может кто-нибудь сказать мне, что не так с моей командой?
И если здесь есть эксперт по GlobalPlatform API, могут ли они сказать мне, как именно я могу использовать материал JavaCard для связи со считывателем смарт-карт или это невозможно? Было бы замечательно, если это возможно, тогда я мог бы пропустить все вещи SecureChannel и использовать те из GP API.
Редактировать: я пытался использовать инструмент GlobalPlatform gp.exe, чтобы просто ткнуть карту для основной информации, и она по-прежнему не удается.
gp -info
Reader: ACS ACR39U ICC Reader 0
ATR: 3BD6970081B1FE451F078031C1521118F9
More information about your card:
http://smartcard-atr.appspot.com/parse?ATR=3BD6970081B1FE451F078031C1521118F9
***** Card info:
Card CPLC:
ICFabricator: 4790
ICType: 6A15
OperatingSystemID: 8231
OperatingSystemReleaseDate: 4176
OperatingSystemReleaseLevel: 0096
ICFabricationDate: 6133
ICSerialNumber: 00001AA0
ICBatchIdentifier: 1424
ICModuleFabricator: 1142
ICModulePackagingDate: 6133
ICCManufacturer: 1143
ICEmbeddingDate: 6133
ICPrePersonalizer: 1144
ICPrePersonalizationEquipmentDate: 6133
ICPrePersonalizationEquipmentID: 130B0000
ICPersonalizer: 0000
ICPersonalizationDate: 0000
ICPersonalizationEquipmentID: 00000000
***** CARD DATA
Unknown tag: 31
***** KEY INFO
VER:1 ID:1 TYPE:AES LEN:32
VER:1 ID:2 TYPE:AES LEN:32
VER:1 ID:3 TYPE:AES LEN:32
затем я пытаюсь просто перечислить содержимое карты (это нормально для пустой карты?)
gp -l
pro.javacard.gp.GPException: STRICT WARNING: Card cryptogram invalid!
Card: FC3F2DC68462F1DF
Host: 5B54B15BCAD52B52
!!! DO NOT RE-TRY THE SAME COMMAND/KEYS OR YOU MAY BRICK YOUR CARD !!!
at pro.javacard.gp.GlobalPlatform.giveStrictWarning(GlobalPlatform.java:207)
at pro.javacard.gp.GlobalPlatform.openSecureChannel(GlobalPlatform.java:583)
at pro.javacard.gp.GPTool.main(GPTool.java:463)