我有一个卡支持T0协议,其上安装了一个小程序。主持人发送"多记录阅读"命令获取记录数据。读取的记录由此命令的此数据字段中的记录标识符指定。这些是我做的步骤:
00 B2 00 06 16 73 0A 51 02 40 01 54 04 00 10 00 04 73 08 51 02 40 02 54 02 00 01 00
命令的含义如下:
73 0A 51 02 40 01 54 04 00 10 00 04
标签' 73'表明上面的字节序列包括数据字段中的层次数据对象结构(长度=' 0A')
标签' 51'参考2字节EF标识符=' 40 01'
标签' 54'参考一个或多个记录标识符,在这种情况下是' 00 10'和' 00 04'
53 |数据长度|记录数据| 53 |数据长度|记录数据| ......
我用卡测试此命令,卡片返回'未知错误'消息。
你能告诉我这个命令有什么问题吗?我在任何方面都被误解了吗?
感谢。
答案 0 :(得分:0)
如果不了解实际实施情况,则无法回答这个问题。 6F00
- 指示未知错误的状态字 - 只应在实现有内部错误时返回。例如,对于Java Card实现,在处理APDU的6F00
方法中,为未捕获的异常返回process
。
但就像ISO / IEC 7816-4的其他部分一样,没有什么是一成不变的。当应该返回特定错误时甚至没有定义它,所以即使是上述情况也是不确定的。在这方面,ISO / IEC 7816-4完全没用。
答案 1 :(得分:0)
感谢您的回答。我的问题解决了
实际上,返回SW = 61 XY
不是错误消息。根据ISO 7814-3,它意味着:
正常完成处理(SW2编码N x,即仍然可用的额外数据字节数)。在案例1和3中, 卡不应该使用这样的值。在情况2和4中,为了传输响应数据字节,卡应准备好接收 一个GET RESPONSE命令,P3设置为N x和N e的最小值。
所以只需要发送GET RESPONSE命令来获取响应数据:
00 C0 00 00 XY
XY:可用的额外数据字节数