我正在使用Ionic/Capacitor的PhoneGap-NFC,并试图锁定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);
Password应为1234,pack应为27。
问题是我一直得到0xA (LF)作为对两个命令的响应,标记不锁定自己。
p。我在addTagDiscoveredListener调用之后调用.connect(tech)和.close(),发送GET_VERSION命令按预期工作并返回正确的数据。
请记住,仅设置Password和Pack默认情况下不会启用密码保护,您还需要告诉它要保护卡的哪些部分。
AUTH0
字节(ntag213上0x29h页的第四个字节)的默认值设置为0xFFh
,这意味着没有页面受设置的密码保护(参见数据表8.5.7节中的表11)
AUTH0定义需要进行密码验证的页面地址。字节AUTH0的有效地址范围是00h ~ FFh。如果AUTH0设置为高于用户配置的最后一页的页面地址,则有效地禁用密码保护
因此,您可能希望将AUTH0
字节设置为至少0x4h(用户数据区开始)或更低的值以启用密码保护。
您还应该检查ntag 213的0x2Ah
页上的PROP
访问位是否设置为您的需要,因为默认情况下仅为密码保护write access