0

我正在阅读器端用 java 编写一个软件,以与 MiFare DESfire EV1 卡进行通信。我正在使用这个javax.smartcardio。我设法创建了一个通道并发送了本机 DESfire 命令的包装 APDU。例如,我设法读取文件甚至进行身份验证。

在过去的几天里,我一直在努力解决的问题是尝试在 4 级发送 PPS 命令,以便能够设置读卡器和卡之间的波特率。

原生 PPS 命令如下:

DESFIRE command code 0xD0
DESFIRE command parameter 0x11 0x0A 

如果我与我之前构建 ISO 7816-4 包装 APDU 的技术一致,那么它应该看起来像这样0x90 0xD0 0x00 0x00 0x2 0x11 0x0A 0x00

这是此命令的响应:

SW1 : 0x91
DESFIRE response data : 0x1C
SW2 : none

0x1C代表ILLEGAL_COMMAND_CODE;语法对我来说似乎是正确的,为什么我不能发送这个命令?

4

1 回答 1

1

使用 APDU 包装,您只能包装 DESFire 命令。PPS 命令是底层 ISO 14443-4 层的一部分。事实上,PPS 命令是 ISO 14443-4 传输协议初始化阶段的一部分。但是,一旦您可以传输 APDU,就已经建立了 ISO 14443-4 传输协议 (ISO-DEP / T=CL)。因此此时您无法使用 PPS 命令更改任何协议参数。

通常,您无法更改这些参数,javax.smartcardio除非智能卡读卡器实现了某些特定接口以重新激活具有不同数据速率的卡。

于 2014-02-07T08:03:55.710 回答