我尝试使用密码保护配置NTAG216。
我试图在AUTH0字节中写入起始保护地址,我已经阅读了ntag2x上的整个文档,但我无法弄清楚如何执行此操作。
如果我分析标签内容,我可以看到AUTH0专用页面有.r flat,这应该意味着它是写保护的,但是如何解锁这个页面呢?
有人可以帮助我或为此指明一个示例或Android文档吗?
提前致谢
答案 0 :(得分:0)
我已经解决了我的问题。
问题是我以前无意中设置了PWD,PACK和AUTH0,所以我不能再写AUTH0地址了,因为该地址被锁定了。
正如在docs中所写的那样,该地址可以简单地写为普通的内存页面。
使用android我正在使用此代码来保护NTAG216
根据Michael Roland的说法,我编辑了这样的代码。我更喜欢在CFG1中编写de default值,因为我的代码用作标记的初始化,然后我将其锁定在读写中,因此应该无法进入污垢数据状态
// 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")