mifare 经典上的 APDU 写入块命令

Posted

技术标签:

【中文标题】mifare 经典上的 APDU 写入块命令【英文标题】:APDU Write block commands on mifare classic 【发布时间】:2013-06-06 08:46:02 【问题描述】:

我一直在尝试将一些数据写入我的 mifare 经典卡。首先我发送这两个返回 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

ff d6 00 02 10 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】:

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

用于验证块的 APDU:-

Authenticate a block 的 APDU 格式应为以下格式。

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

例如:-

CLA = FF

INS = 86

P1 = 00

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

Lc = 05(数据字段长度)

数据字段 = 版本 + AddMSB + AddLSB + KeyId + KeyNumber

版本=01

AddMSB=00

AddLSB=05(块号)

KeyID=60/61(keyA 为 60,keyB 为 61)

KeyNo= 00(读卡器的键槽号)

FF 86 00 00 05 01 00 05 60 00

【讨论】:

感谢 vikky,我实际上已经在我发布此问题后看到了您在另一个问题上的帖子 能否提供完整规格列表的参考? 您可以从acs.com.hk/en/products/3/acr122u-usb-nfc-reader下载文档以供参考

以上是关于mifare 经典上的 APDU 写入块命令的主要内容,如果未能解决你的问题,请参考以下文章

Mifare desfire apdu 命令

APDU MIFARE Classic 4K 读取特定扇区/块的值

发送 APDU 命令以读取被动标签?

从 MIFARE DESFire 获取 UID 的 APDU?

使用 APDU C# 设置自己的身份验证密钥 MiFare Classic

mifare教程 用MifareClassic工具模拟加密门禁教程