在NXP NTAG216中配置AUTH0字段

时间:2016-10-21 10:28:35

标签: android nfc

我尝试使用密码保护配置NTAG216。

我试图在AUTH0字节中写入起始保护地址,我已经阅读了ntag2x上的整个文档,但我无法弄清楚如何执行此操作。

如果我分析标签内容,我可以看到AUTH0专用页面有.r flat,这应该意味着它是写保护的,但是如何解锁这个页面呢?

有人可以帮助我或为此指明一个示例或Android文档吗?

提前致谢

1 个答案:

答案 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")