我正在用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
;语法对我来说似乎正确,为什么我不能发送这个命令?
答案 0 :(得分:1)
使用APDU包装,您只能包装DESFire命令。 PPS命令是基础ISO 14443-4层的一部分。实际上,PPS命令是ISO 14443-4传输协议的初始化阶段的一部分。但是,一旦您处于可以传输APDU的位置,就已经建立了ISO 14443-4传输协议(ISO-DEP / T = CL)。因此,此时您无法使用PPS命令更改任何协议参数。
一般情况下,您无法通过javax.smartcardio
更改这些参数,除非智能卡读卡器实现某些特定接口,以便以不同的数据速率重新激活卡。