我最近刚开始学习智能卡编程。在
我正在使用Gemalto Prox SU reader,在Ubuntu16.04机器上有几张空白的MIFARE Classic 1k卡。 我已经安装了gemaltoproxsu读卡器,并让读卡器通过python中的脚本使用Ludovic Russeau's pyscard来检测卡。在
我已经成功地编写了一个脚本,将apdu发送到读卡器/卡连接。我可以读取ATR,发送GetData命令来读取卡的序列号,并一直试图向卡发送几个apdu来尝试读取卡的存储块。但是,除了LoadKey命令外,其他所有命令都返回“0x6982:security status not completed”
我知道我应该在每次读写之前发送一个通用的身份验证命令,正如手册中所述,但是即使是通用的Authenticate命令也返回“security status not completed”。从我所读的来看,这应该很简单。我错过了什么?如何设置我的脚本,使身份验证成功,我可以从内存块中读取数据?在
使用Prox SU读卡器读取MIFARE Classic 1K卡的典型流程是:
加载身份验证密钥。例如,如果使用带有默认值(“transport key”)
^{1}$FF FF FF FF FF FF
的key A读取卡,则可以使用以下LOAD key命令:这将密钥
FF FF FF FF FF FF
存储到读卡器的易失性内存(RAM)中的第一个键槽(0x50)。使用通用Authenticate命令对扇区进行身份验证。即使您对整个扇区进行了身份验证,您仍需要按块号(通常是扇区的第一个块)对扇区进行寻址:
最后,可以使用read BINARY命令读取块:
如果在常规身份验证过程中收到状态码
69 82
,这很可能表示您试图使用错误的密钥进行身份验证。在相关问题 更多 >
编程相关推荐