更改MIFARE Classic中扇区的身份验证密钥

时间:2016-11-27 07:24:12

标签: python authentication raspberry-pi rfid mifare

根据Evan在this page中的回答,为了更改扇区的验证密钥,我们需要覆盖该扇区的第4个块(最后一个块)中的密钥。

默认密钥始终为'FF FF FF FF FF FF',这是一个六字节密钥。现在,如果我尝试使用pi-rc522 library中的write方法更改它,它会引发Index Error,因为每个块必须是16个字节,但验证密钥只有6个字节长。

我哪里错了?

该设备是RC522,我在Raspberry Pi 3上使用Raspbian。

1 个答案:

答案 0 :(得分:1)

您只能在MIFARE Classic卡上编写整个块。因此,您需要编写完整的扇区预告片,而不仅仅是密钥A(前6个字节)。

完整的行业预告片如下所示:

+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| KEY A                       | ACCESS BITS  | GP | KEY B                       |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+

如果您希望扇区的所有块都只能使用密钥A进行读/写(即,不使用密钥B),则可以使用访问位FF 07 80。因此,如果要将密钥A设置为11 22 33 44 55 66,则可以将此值用于预告块:

+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| KEY A                       | ACCESS BITS  | GP | KEY B                       |
| 11   22   33   44   55   66 | FF   07   80 | 00 | 00   00   00   00   00   00 |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+

最后,要小心你写入行业预告片的内容。访问位受冗余机制保护。如果将无效访问位写入预告片块,整个扇区将被不可逆转地阻止。