Mifare Classic上的APDU写块命令

4
我一直试图将数据写入我的Mifare Classic卡片。首先,我发送了以下这两个命令,返回90 00:
加载Mifare密钥:
FF 82 20 01 06 FF FF FF FF FF FF
验证:
FF 86 00 00 05 01 00 01 60 01
现在我可以向扇区0和块1 + 2写入命令:
ff d6 00 01 10 14 01 03 E1 03 E1 03 E1 03 E1 03 E1 03 E1 03 E1 03 E1 ff d6 00 02 10 03 E1 03 E1 03 E1 03 E1 03 E1 03 E1 03 E1 03 E1 03 E1
我不小心多次覆盖了块3,导致该扇区似乎无法读取:
如果我发送命令 ff d6 00 04 10,则返回错误代码69 82,我通过谷歌查询得知是身份验证错误。
我需要对每个扇区进行身份验证吗?如果需要,那么下一个和后续扇区的命令是什么?
1个回答

11

是的,您必须在读/写该扇区的块之前对每个扇区进行身份验证。现在您已经执行了身份验证命令并覆盖了块3(扇区尾部),这意味着密钥和访问权限已更改。

身份验证块的APDU格式:

身份验证块的APDU格式应按以下格式设置。

CLA + INS + P1 + P2 + Lc +(版本+ AddMSB + AddLSB + KeyID + KeyNumber)

例如:

CLA = FF

INS = 86

P1 = 00

P2 = 01(用于身份验证的块编号)

Lc = 05(数据字段的长度)

Data Field = Version + AddMSB + AddLSB + KeyId + KeyNumber

Version = 01

AddMSB = 00

AddLSB = 05(块号)

KeyID = 60/61(60表示KeyA,61表示KeyB)

KeyNo = 00(读卡器的密钥槽编号)

FF 86 00 00 05 01 00 05 60 00


谢谢 Vikky,实际上我在发完这个问题之后已经看到了你在另一个问题中的帖子。 - Plastkort
请问您能提供完整规格清单的参考资料吗? - Jay Shenawy
您可以从https://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/下载文档以供参考。 - Jitendra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接