2015-02-24 76 views
-3

我有一个智能卡读卡器,我想从我的SIM卡获取数据。我试图发送几个APDU命令,但除了ATR外我什么都收不到。所以如果有一种可能的方式来访问我必须发送哪些APDU命令的SIM卡?T = 0协议的APDU命令

+0

您可以显示迄今为止尝试过的命令吗?此外,没有多少人熟悉APDU,因此发布上下文有助于打击那些不立即看到如何产生答案的人不可避免的downvote/close狂欢。 – 2015-02-24 08:23:04

回答

2

在谈到SIM卡时,您需要参考3GPP规范中的APDU命令,而不是ISO 7816.APDU命令在3GPP TS 11.11第8和9节中列出。最新版本是8.14.0。请注意,CLA字节是专有的,即使用0xA0。

尝试发送SELECT APDU命令,与MF的文件标识符,如下:

A0 A4 00 00 02 3F 00 

你应该得到9FXX响应。

如果您的卡是USIM,您可以发送基于ETSI 102.221和3GPP 31.102以及3GPP 51.011的APDU命令。

+0

SIM卡的APDU命令是否与USIM的APDU命令不同?你能否向我推荐两者的正确规格?那么OTA命令呢?有没有任何规范可以帮助我使用OTA SMS? – Jean 2015-03-14 11:09:49

+0

此外,我找不到“3GPP 51.011”作为pdf。你有吗? – Jean 2015-03-14 11:17:53

+1

SIM和USIM/UICC的APDU在CLA上不同('A0'对'00'/'80')。但是,两者都使用类似的INS。 OTA数据从服务器发送到SIM,手机使用信封APDU(INS'C2')。要理解OTA,您需要掌握SMS规范(3GPP TS 23.040),然后是串联+安全消息传递(3GPP TS 23.048)。所有规格可从3GPP.org下载:http://www.3gpp.org/specifications/specification-numbering – David 2015-03-14 15:01:33

1

T = 0是一个特殊的协议。它不会超出标准SW1/SW2发送响应,如果没有额外要求。这是通过使用前一个SW1/SW2长度的GET RESPONSE命令完成的。欲了解更多信息,请参阅ISO 7816第4部分。

+0

是的,我试过了。我发送了GET RESPONSE命令并成功接收到此响应:85 10 00 00? 00 8 00 00 00 01 00 01 00 00 00 00 m 90 00,我读到这是MF(指令字节)。现在我该怎么处理这个字节? – BornForJava 2015-02-25 06:41:20

+0

所以你现在可以得到卡的输出。我想,你对Select MF/Application没有包含太多有趣的东西给予了回应。在由@David链接的文档的第10部分查看现有文件及其内容。 – guidot 2015-02-25 09:50:44