根据Evan在this page中的回答,为了更改扇区的验证密钥,我们需要覆盖该扇区的第4个块(最后一个块)中的密钥。
默认密钥始终为'FF FF FF FF FF FF',这是一个六字节密钥。现在,如果我尝试使用pi-rc522 library中的write
方法更改它,它会引发Index Error
,因为每个块必须是16个字节,但验证密钥只有6个字节长。
我哪里错了?
该设备是RC522,我在Raspberry Pi 3上使用Raspbian。
答案 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 | +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
最后,要小心你写入行业预告片的内容。访问位受冗余机制保护。如果将无效访问位写入预告片块,整个扇区将被不可逆转地阻止。