MIFARE经典1K的锁定机制MIFARE经典1K的锁定机制(Locking mechanism o

2019-05-12 06:14发布

MIFARE经典1K的过程

  1. 轮询标签
  2. 验证这些标签
  3. 如果验证succeded然后读/写。

我已经完成了这些程序,并读写从具体部门的数据。

命令轮询标签

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00,
                (byte) 0x00, (byte) 0x04, (byte) 0xD4, (byte) 0x4A,
                (byte) 0x01, (byte) 0x00 }

验证命令

new byte[] { (byte) 0xFF, (byte) 0x86, (byte) 0x00,
                (byte) 0x00, (byte) 0x05, (byte) 0x01,(byte) 0x00, (byte) 0x04, 
                                    (byte) 0x60,(byte) 0x00 };

这里“(字节)0×01”是扇区1

和扇区1写入,块5

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00,(byte) 0x00, (byte) 0x15, (byte) 0xD4,
             (byte)    0x40,(byte) 0x01, (byte) 0xA0, (byte) 0x05,(byte) 0x01, (byte) 0x02, 
             (byte) 0x03,(byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,(byte) 0x08, 
             (byte) 0x09,(byte) 0x0A,(byte) 0x0B, (byte) 0x0C, (byte) 0x0D,(byte) 0x0E, 
             (byte) 0x0F, (byte) 0x10};

这里

(byte) 0x01, (byte) 0x02, (byte) 0x03,(byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,(byte) 0x08,(byte) 0x09,(byte) 0x0A,(byte) 0x0B, (byte) 0x0C, (byte) 0x0D,(byte) 0x0E,(byte) 0x0F,(byte) 0x10

是数据的那些是在块5上的扇区1写入。

阅读从扇区1和5座司令部

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00,
                (byte) 0x00, (byte) 0x05, (byte) 0xD4, (byte) 0x40,
                (byte) 0x01, (byte) 0x30, (byte) 0x05 };

我的相关完整的代码在这里...

我的问题是我怎么能“锁定/只读状态”,从一个特定的部门块?

Answer 1:

该认证密钥和用于MIFARE卡的每个扇区的访问条件,位于该部门(该部门预告片 )的最后一块。 您可以更新与使用常规的写命令新的准入条件和认证密钥此块。

扇区尾部看起来是这样的:

+-----------------------------+--------------+----+-----------------------------+
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 | 11 | 12 | 13 | 14 | 15 |
+-----------------------------+--------------+----+-----------------------------+
|            Key A            | Access Bits  | GP |            Key B            |
|          (6 bytes)          |  (3 bytes)   | B  |          (6 bytes)          |
+-----------------------------+--------------+----+-----------------------------+

因此,接入位位于字节6-8和看起来像这样:

        +-------+-------+-------+-------+-------+-------+-------+-------+
        | Bit 0 | Bit 1 | Bit 2 | Bit 3 | Bit 4 | Bit 5 | Bit 6 | Bit 7 |
        +-------+-------+-------+-------+-------+-------+-------+-------+
Byte 6: | nC2_3 | nC2_2 | nC2_1 | nC2_0 | nC1_3 | nC1_2 | nC1_1 | nC1_0 |
        +-------+-------+-------+-------+-------+-------+-------+-------+
Byte 7: |  C1_3 |  C1_2 |  C1_1 |  C1_0 | nC3_3 | nC3_2 | nC3_1 | nC3_0 |
        +-------+-------+-------+-------+-------+-------+-------+-------+
Byte 8: |  C3_3 |  C3_2 |  C3_1 |  C3_0 |  C2_3 |  C2_2 |  C2_1 |  C2_0 |
        +-------+-------+-------+-------+-------+-------+-------+-------+

其中nCx_y =未Cx_y和 “C1_x,C2_x,C3_x” 是用于块X的访问条件:

  • C1_3,C2_3,C3_3:扇区尾部(块3在这个扇区)
  • C1_2,C2_2,C3_2:块2在这一领域
  • C1_1,C2_1,C3_1:在这个扇区块1
  • C1_0,C2_0,C3_0:在这个扇区块0

你可以找到在MIFARE 1K数据表可能准入条件的详细列表: https://www.nxp.com/docs/en/data-sheet/MF1S50YYX_V1.pdf



文章来源: Locking mechanism of Mifare Classic 1K