我如何在Mifare Ultralight C标签中永久锁定特定的数据页面



我已经成功地在数据第30至38页上编写了一些数据。

之后,我想锁定这些页面,以防止进一步的写作。写锁应该是永久的,因此,即使有人知道身份验证密钥,他们也应该写信给这些页面。

据我了解数据表,我必须在OTP页面上写一些位。但是我不完全理解我要发送的命令要锁定,专门第30至38页。

有人可以帮助我确定需要发送到卡的命令吗?我的想法是我必须在第40页上写F0。但是,这也可能使第28、29和39页锁定,因此,无法使用。

如何永久锁定30至38页?

为了设置包含30至38页的锁定位,您需要设置位于第40页字节0的位5、6和7中的锁定点。您可以使用写命令。对于锁定位(或任何OTP页面),此命令将仅在命令的数据参数中编程设置为" 1"的位(基本上导致逻辑或逻辑)。请注意,写入命令总是将整页(即4个字节)作为其数据参数:

byte[] result = nfcA.transceive(new byte[] {
    (byte)0xA2,  /* CMD = WRITE */
    (byte)0x28,  /* PAGE = 40   */
    (byte)0xE0, (byte)0x00, (byte)0x00, (byte)0x00  /* DATA = lock pages 28..39 */
});

但是,嘿,我不想锁定第28、29和39页!如何锁定页面30至38?

不幸的是,你不能!第16至39页的Mifare Ultralight C的锁定机制在4页的块中组织。因此,您只能锁定以下4页的组:

  • 第16..19
  • 第20..23
  • 第24..27
  • 第28..31
  • 第32..35
  • 第36..39

块锁定位是什么?

块锁定位设置了锁定页面中位的写保护。因此,例如,如果第28至39页的块锁定位设置为" 1",则意味着您无法更改这些页面的三个锁定位的状态。因此,如果将第28至31页的锁定位设置为第32至35页和36至39的锁定位,然后设置块锁定位,则无法再激活第32页的写入保护到39。

最新更新