在pc / sc响应中获得额外的字节82 00

时间:2017-04-20 21:57:24

标签: nfc smartcard sony contactless-smartcard pcsc

我正在尝试使用pc / sc透明会话和收发数据对象从sony felica卡读取数据。

我得到的响应是没有加密命令的读取

c0 03 00 90 00 92 01 00 96 02 00 00 97 82 00 +数据

但是根据协议,响应应该是

c0 03 00 90 00 92 01 00 96 02 00 00 97 +数据

我无法弄清楚卡片的回复中附加的最后一个82 00。

现在,当我尝试使用卡进行身份验证时,

c0 03 01 6F 01 90 00

这是pc / sc中的错误。我想解决这些额外的字节82 00,我相信这将解决所有需要验证和加密的命令的问题。

1 个答案:

答案 0 :(得分:1)

响应数据采用BER-TLV编码(请参阅PC/SC 2.02, Part 3)。

在BER-TLV编码中,有两种方法可以用两个八位字节的数据0x97对标记0xD0D1进行编码,例如:

  • 97|02|D0D1 - 简短形式(see parsed

  • 97|8102|D0D1 - 包含一个长度为see parsed的八位字节的长格式

  • 97|820002|D0D1 - 包含两个八位字节的长格式(see parsed

  • 97|83000002|D0D1 - 包含三个八位字节的长字形(see parsed

  • ...

您的读者使用两个八位字节发送 ICC响应数据对象的长度(完全有效)。

你应该正确解析答案......祝你好运!

PS:以上意思是,截断响应的Data部分仍然包含一个带有响应长度的额外字节(即Len|Data