将FormatPICC命令发送到MIFARE DESFire EV1卡时,我发现以下行为:
PCD ---> PICC -------------- 0xFC ---> <--- 0x00 or 0x00 + MAC or ERROR CODE
当我发送另一个命令(例如GetVersion(0x60))时,无论使用哪种认证(0x0A或0xAA),响应都不包含MAC。
为什么会有这种差异?我还应该为这些命令计算MAC(更新加密状态)吗?是否有一些文件可以解释这一点?
答案 0 :(得分:0)
你的观察似乎是错误的。使用带有TDES的AuthenticateISO(0x1A)或AuthenticateAES(0xAA)进行身份验证后,MIFARE DESFire EV1将返回MAC以响应所有命令(当然,除了身份验证命令和SelectApplication,它们都会重置身份验证)。
因此,应该返回MAC以响应GetVersion命令。但请注意,GetVersion命令分为3帧。 MAC仅附加到最后一帧(状态码为0x00的帧):
PCD ---> PICC -------------- 0x60 ---> <--- 0xAF + DATA 0xAF ---> <--- 0xAF + DATA 0xAF ---> <--- 0x00 + DATA + MAC