2014-03-29 88 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) –