无法验证用作 NDEF 标签的 MIFARE Classic 标签
Unable to authenticate to a MIFARE Classic tag used as NDEF tag
我正在使用 ACR 1255U-J1 作为外部 reader 通过蓝牙连接。我用来访问 reader 的库是 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
。
要验证的标签格式有区别吗?
状态字6300
表示认证失败。因此,您很可能使用了错误的密钥进行身份验证。
您当前尝试使用密钥 A (0x60
) 和密钥值 FFFFFFFFFFFF
对扇区 1(0x04
,因为它从块 4 开始)进行身份验证。
在将 MIFARE Classic 标签格式化为用作 NDEF 标签时,使用以下数据表中定义的恩智浦专有 NDEF 映射规范:
NDEF 映射将访问键更改为明确定义的值:
MAD 扇区 0(和 4K 卡上的扇区 16):
- 键 A 将设置为
A0A1A2A3A4A5
。
- 键 B 可以设置为任何值。 Android,例如,将保留默认值
FFFFFFFFFFFF
。
- 访问条件可以设置为允许 read/write 使用两个密钥访问,或者允许使用密钥 A 进行只读访问,并允许使用密钥 B 进行 read/write 访问。
NDEF 扇区(在 MAD 中声明,在 1..15 范围内(在 4K 卡上为 17..39)):
- 键 A 将设置为
D3F7D3F7D3F7
。
- 键 B 可以设置为任何值。 Android,例如,将保留默认值
FFFFFFFFFFFF
。
- 访问条件可以设置为允许 read/write 使用两个密钥访问,或者允许使用密钥 A 进行只读访问,并允许使用密钥 B 进行 read/write 访问。
不用于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 进行读取访问。
我正在使用 ACR 1255U-J1 作为外部 reader 通过蓝牙连接。我用来访问 reader 的库是 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
。
要验证的标签格式有区别吗?
状态字6300
表示认证失败。因此,您很可能使用了错误的密钥进行身份验证。
您当前尝试使用密钥 A (0x60
) 和密钥值 FFFFFFFFFFFF
对扇区 1(0x04
,因为它从块 4 开始)进行身份验证。
在将 MIFARE Classic 标签格式化为用作 NDEF 标签时,使用以下数据表中定义的恩智浦专有 NDEF 映射规范:
NDEF 映射将访问键更改为明确定义的值:
MAD 扇区 0(和 4K 卡上的扇区 16):
- 键 A 将设置为
A0A1A2A3A4A5
。 - 键 B 可以设置为任何值。 Android,例如,将保留默认值
FFFFFFFFFFFF
。 - 访问条件可以设置为允许 read/write 使用两个密钥访问,或者允许使用密钥 A 进行只读访问,并允许使用密钥 B 进行 read/write 访问。
- 键 A 将设置为
NDEF 扇区(在 MAD 中声明,在 1..15 范围内(在 4K 卡上为 17..39)):
- 键 A 将设置为
D3F7D3F7D3F7
。 - 键 B 可以设置为任何值。 Android,例如,将保留默认值
FFFFFFFFFFFF
。 - 访问条件可以设置为允许 read/write 使用两个密钥访问,或者允许使用密钥 A 进行只读访问,并允许使用密钥 B 进行 read/write 访问。
- 键 A 将设置为
不用于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 进行读取访问。