在 NXP NTAG216 中配置 AUTH0 字段
Configuring AUTH0 field in NXP NTAG216
我正在尝试为 NTAG216 配置密码保护。
我正在尝试在 AUTH0 字节中写入受保护的起始地址,我已经阅读了 ntag2x 上的整个文档,但我不知道该怎么做。
分析tag内容可以看到AUTH0专用页面有.r平,应该是写保护了,但是如何解锁这个页面呢?
有人可以帮助我或为此提供示例或 android 文档吗?
提前致谢
我的问题已经解决了。
问题是我之前无意中设置了PWD、PACK和AUTH0,所以我不能再写AUTH0地址了,因为那个地址被锁定了。
如文档中所写,该地址可以像普通内存页一样简单地写入。
android 我正在使用此代码来保护 NTAG216
根据 Michael Roland 的说法,我已经这样编辑了我的代码。我更喜欢在CFG1中写默认值,因为这段代码对我来说是作为标签的初始化,然后我将其锁定在读写状态,所以应该不可能进入脏数据状态
// PWD
if (!ntag.write(0xE5, pwd.getBytes(CHARSET))) {
showToastMex("ERROR IN WRITING PWD");
retValue = false;
}
// PACK
if (retValue) {
byte[] empty = {0x00, 0x00};
byte[] completePack = ArrayUtils.addAll(pack.getBytes(HbgHelper.CHARSET), empty);
if (!ntag.write(0xE6, completePack)) {
showToastMex("ERROR IN WRITING PACK");
retValue = false;
}
}
// PROT (enable read and write password protection from AUTH0 ADDRESS
if (success) {
byte accessCfg = (byte)Integer.parseInt("10000000", 2);
byte[] cfg2 = {accessCfg, 0x00, 0x00, 0x00};
if (!ntag.write(0xE4, cfg2)) {
showToast("ERROR IN WRITING PROT");
success = false;
}
}
// AUTH0 (from page 220 = DCh)
if (retValue) {
byte[] toWrite = {(byte)0x01, (byte)0x00, (byte)0x00, HbgHelper.LOCK_MEM_ADDR_START};
if (!ntag.write(0xE3, toWrite)) {
showToastMex("ERROR IN WRITING AUTH0");
retValue = false;
}
}
哪里
MEM_ADDR_TO_LOCK = (byte) 0xDC
和
CHARSET = Charset.forName("UTF-8")
我正在尝试为 NTAG216 配置密码保护。
我正在尝试在 AUTH0 字节中写入受保护的起始地址,我已经阅读了 ntag2x 上的整个文档,但我不知道该怎么做。
分析tag内容可以看到AUTH0专用页面有.r平,应该是写保护了,但是如何解锁这个页面呢?
有人可以帮助我或为此提供示例或 android 文档吗?
提前致谢
我的问题已经解决了。
问题是我之前无意中设置了PWD、PACK和AUTH0,所以我不能再写AUTH0地址了,因为那个地址被锁定了。
如文档中所写,该地址可以像普通内存页一样简单地写入。
android 我正在使用此代码来保护 NTAG216
根据 Michael Roland 的说法,我已经这样编辑了我的代码。我更喜欢在CFG1中写默认值,因为这段代码对我来说是作为标签的初始化,然后我将其锁定在读写状态,所以应该不可能进入脏数据状态
// PWD
if (!ntag.write(0xE5, pwd.getBytes(CHARSET))) {
showToastMex("ERROR IN WRITING PWD");
retValue = false;
}
// PACK
if (retValue) {
byte[] empty = {0x00, 0x00};
byte[] completePack = ArrayUtils.addAll(pack.getBytes(HbgHelper.CHARSET), empty);
if (!ntag.write(0xE6, completePack)) {
showToastMex("ERROR IN WRITING PACK");
retValue = false;
}
}
// PROT (enable read and write password protection from AUTH0 ADDRESS
if (success) {
byte accessCfg = (byte)Integer.parseInt("10000000", 2);
byte[] cfg2 = {accessCfg, 0x00, 0x00, 0x00};
if (!ntag.write(0xE4, cfg2)) {
showToast("ERROR IN WRITING PROT");
success = false;
}
}
// AUTH0 (from page 220 = DCh)
if (retValue) {
byte[] toWrite = {(byte)0x01, (byte)0x00, (byte)0x00, HbgHelper.LOCK_MEM_ADDR_START};
if (!ntag.write(0xE3, toWrite)) {
showToastMex("ERROR IN WRITING AUTH0");
retValue = false;
}
}
哪里
MEM_ADDR_TO_LOCK = (byte) 0xDC
和
CHARSET = Charset.forName("UTF-8")