NFC Mifare Ultralight 虚假响应数据

NFC Mifare Ultralight bogus response data

我将 PhoneGap-NFC 与 Ionic/Capacitor 一起使用,并试图锁定 NXP NTAG213。

根据数据表 (https://www.nxp.com/docs/en/data-sheet/NTAG213_215_216.pdf),我必须写入页面 0x2B 以设置 PWD,页面 0x2C 用于 PACK。

const set_password_cmd = Uint8Array.from([
    0xA2, //WRITE
    0x2B, //address 2B
    1, 2, 3, 4//pwd
]);
let res = await nfc.transceive(set_password_cmd);

const set_pack_cmd = Uint8Array.from([
    0xA2, //WRITE
    0x2C, //address 2C
    2, 7, 0, 0//pack
]);
res = await nfc.transceive(set_pack_cmd);

密码应该是1234,包应该是27。

问题是我一直收到 0xA (LF) 作为对这两个命令的响应,并且标签没有自行锁定。

PS。之后我在 addTagDiscoveredListener 调用中调用 .connect(tech) 和 .close(),发送 GET_VERSION 命令按预期工作并且 returns 正确数据。

请记住,仅设置密码和包默认不会启用密码保护,您还需要告诉它要保护卡的哪些部分。

AUTH0 字节(ntag213 上 0x29h 页的第四个字节)的默认值设置为 0xFFh,这意味着没有页面受到设置密码的保护(参见 table 数据表第 8.5.7 节中的 11)

AUTH0 defines the page address from which the password verification is required. Valid address range for byte AUTH0 is from 00h to FFh. If AUTH0 is set to a page address which is higher than the last page from the user configuration, the password protection is effectively disabled

因此您可能希望将 AUTH0 字节的值设置为至少 0x4h(用户数据区的开始)或更低的值以启用密码保护。

您还应检查 ntag 213 0x2Ah 页上的 PROP 访问位是否已设置为您的需要,因为默认设置仅为密码保护 write access