通过 Android 应用将 MIFARE Classic 1K 设为只读

Make MIFARE Classic 1K read only through an Android app

我想让 MIFARE Classic 1k 卡在写入一些初始数据后只读。我想我需要在将数据写入新卡后将密钥 A 和 B 更改为自定义的东西。但是我该怎么做呢?这些密钥与访问位位于同一块中,因此我无法使用 MifareClassic 方法编写完整的块:

public void writeBlock(int blockIndex, byte[] data) throws IOException

因为它也会重写访问位。

当然需要使用方法MifareClassic.writeBlock()。由于 MIFARE Classic 只支持写入完整块,您必须更新整个扇区尾块。

由于 MIFARE Classic 没有自由读取模式(即无需事先验证即可读取),您需要同时设置读取密钥(您通常会为此使用密钥 A)和访问位(配置密钥 A作为只读键)。

您可以在此处找到有关可能的访问条件值和块格式的更多信息:

  • MIFARE Classic: How to find to good Access Byte value
  • Set own authentication keys MiFare Classic with APDU C#