无法对用作NDEF标记的MIFARE Classic标记进行身份验证

时间:2016-05-05 16:52:19

标签: android authentication nfc mifare ndef

我使用ACR 1255U-J1作为通过蓝牙连接的外部阅读器。我用来访问阅读器的库是acsbt-1.0.0preview7。我使用以下命令对MIFARE Classic标记的扇区1(块4)进行身份验证:

FF 82 0000 06 FFFFFFFFFFFF
FF 86 0000 05 01 00 04 60 00

当我对空的MIFARE Classic标签进行身份验证(使用制造商默认配置)时,我会收到响应状态字9000。这表明身份验证成功。

但是,当我尝试对已格式化用作NDEF标记的MIFARE Classic标记进行身份验证时,返回的状态字为6300

要进行身份验证的标记格式之间是否存在差异?

1 个答案:

答案 0 :(得分:5)

状态字6300表示身份验证失败。因此,您最有可能使用错误的密钥进行身份验证。

您目前尝试使用密钥值0x60)进行身份验证,密钥值FFFFFFFFFFFF到扇区1(0x04,因为它从块4开始)。

当MIFARE Classic标记被格式化用作NDEF标记时,使用NXP在以下数据表中定义的专有NDEF映射规范:

NDEF映射将访问键更改为明确定义的值:

  • MAD扇区0(以及4K卡上的扇区16):

    • 键A将设置为A0A1A2A3A4A5
    • 键B可以设置为任何值。例如,Android会将其保留为默认值FFFFFFFFFFFF
    • 访问条件可以设置为允许使用两个密钥进行读/写访问,或者允许使用密钥A进行只读访问,使用密钥B进行读/写访问。
  • NDEF扇区(在MAD中声明,在1..15范围内(以及4K卡上的17..39)):

    • 键A将设置为D3F7D3F7D3F7
    • 键B可以设置为任何值。例如,Android会将其保留为默认值FFFFFFFFFFFF
    • 访问条件可以设置为允许使用两个密钥进行读/写访问,或者允许使用密钥A进行只读访问,使用密钥B进行读/写访问。
  • 未用于NDEF映射的其他扇区(在MAD中声明,范围为1..15(以及4K卡上的17..39)):

    • 密钥和访问条件设置为特定于应用程序的(或默认值),NDEF映射规范不会触及它们。

因此,当标记使用NDEF映射并尝试对第一个NDEF扇区进行身份验证时,您需要使用值为D3F7D3F7D3F7的NDEF密钥A:

FF 82 0000 06 D3F7D3F7D3F7
FF 86 0000 05 01 00 04 60 00

请注意,根据访问位的配置,您可能只能使用密钥A进行读访问。