2014-03-29 60 views
1

我試圖從智能卡中的文件中讀取數據的響應,我使用下面的APDU命令讀取一個APDU命令

00 B0 00 02 00 

,但我得到這樣的響應:

A1 1B 4F 0C A0 00 00 00 77 02 08 05 04 49 44 01 50 07 43 4E 49 2D 43 53 45 51 02 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 

如何以十六進制編碼轉換或讀取此值?

回答

4

最後兩個字節組成狀態字(SW),首先是90,然後是00。其餘的是文件中二進制數據的十六進制編碼。

但看起來像內容是ASN.1 BER編碼。所以你需要BER解碼響應。 BER是TLV(標籤長度值)。所以前兩個字節是標籤和值,A1 1B。文本的含義是特定於上下文的(因此請查看此特定文件的規範)。所以你的文件實際上包含2 + 1B個字節,或者29個字節,其餘的已經被保留爲默認值00

在ISO 7816-4中指定了BER解碼,您應該瞭解基於文件的智能卡的任何內容。也看看Wikipedia page about ASN.1,並看看解碼值here

+1

似乎:4F - AID TLV,包含歐貝特的申請(RID = A000000077)。 50 - 申請標籤「CNI-CSE」。 – David

+1

在這個特別的日子之後,沒想到這麼長時間,特別是自組織以來發表了評論。提問者似乎已經放棄了它(羞辱你,安娜斯),但是,更多信息[這裏](http://lapo.it/asn1js/#A11B4F0CA000000077020805044944015007434E492D43534551021001) –