【问题标题】:Mifare Ultralight C LockMifare Ultralight C 锁
【发布时间】:2014-10-16 14:58:54
【问题描述】:

我正在尝试锁定 Mifare Ultralight C 标签。我想将 NDEF 页 0x04 到 0x27 设置为只读。我认为这可以通过Ndef.makeReadonly() 来实现。

此外,我想将页面 0x29 到 0x2F 设置为受密码保护(用于读取和写入),以便只有在身份验证成功后才能访问它们。我很难理解需要在锁定字节中设置哪些字节(第 0x28 页,字节 0、1),以及是否还需要设置扇区 0x2A 和 0x2B。

【问题讨论】:

    标签: android nfc mifare lockbits


    【解决方案1】:

    我正在尝试将 NDEF 页 0x04 到 0x27 设置为只读。我认为这可以通过 Ndef.makeReadonly() 来实现。

    不一定,Ndef.makeReadonly() 可能只在能力容器中设置只读标志(根据 NFC 论坛类型 2 标签操作规范)。

    如果您想确保设置实际的锁定位,您可以将标签连接为NfcAMifareUltralight 标签技术,然后发出锁定位的写入命令。

    NfcA nfcA = NfcA.get(tag);
    nfcA.connect();
    
    byte[] result1 = nfcA.transceive(new byte[] {
        (byte)0xA2,  /* CMD = WRITE */
        (byte)0x02,  /* PAGE = 2    */
        (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF  /* DATA = lock pages 3..15 */
    });
    
    byte[] result2 = nfcA.transceive(new byte[] {
        (byte)0xA2,  /* CMD = WRITE */
        (byte)0x28,  /* PAGE = 40   */
        (byte)0x0F, (byte)0x00, (byte)0x00, (byte)0x00  /* DATA = lock pages 16..27 */
    });
    

    有关锁定位的编码,另请参阅Mifare Ultralight: lock specific pages

    我想将页面 0x29 到 0x2F 设置为密码保护(用于读取和写入),以便只有在身份验证成功后才能访问它们。

    使用我上面显示的写入命令,您首先将您的身份验证密钥写入第 44..47 页。然后将 AUTH1(第 43 页)写为全零。最后,您可以将 AUTH0(第 42 页)写为 0x29 0x00 0x00 0x00 以要求对第 41 页及更高版本进行身份验证。实际上,我建议锁定第 40 页及以上,以便没有人可以为这些页面设置锁定位。或者,您可以设置块锁定位(即将0x1F 0x0F 0x00 0x00 写入第 40 页),以便无法更改未锁定页面的锁定位。

    【讨论】:

    • 感谢您的详细回复。非常感激。我会在周末尝试对此进行测试。
    • 你好!如何锁定第 4 至 7 页 MifareUltralight NFC?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多