2016-11-27 502 views
1

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

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

我哪里错了?

该设备是RC522和我使用的树莓派3

回答

1

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

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

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

如果希望该部门的所有块是可读/写,关键只有A(即不使用键B),你可以使用的访问位FF 07 80。因此,如果你想一键设置为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 | 
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ 

最后,要小心你写的东西到扇区尾部。访问位受冗余机制的保护。如果将无效的访问位写入尾部块,整个扇区将不可逆转地被阻塞。

+0

通过扇区尾随你的意思是该行业的最后一块?例如,如果'SelectTag'返回'8' - 是否意味着关键信息将被存储在块'7'中? – jdevelop