我正在尝试从智能卡中的文件读取数据,我使用以下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
如何以十六进制编码转换或读取此值?
答案 0 :(得分: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 :(得分:0)
您需要遵循TS 11.11,TS 11.14,TS 03.48。
http://www.etsi.org/deliver/etsi_ts/100900_100999/100977/08.14.00_60/ts_100977v081400p.pdf
http://www.etsi.org/deliver/etsi_ts/101200_101299/101267/08.18.00_60/ts_101267v081800p.pdf
http://www.etsi.org/deliver/etsi_ts/101100_101199/101181/08.09.00_60/ts_101181v080900p.pdf