2015-02-24 110 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