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

Python 在MIFARE Classic中更改扇区的身份验证密钥,python,authentication,raspberry-pi,rfid,mifare,Python,Authentication,Raspberry Pi,Rfid,Mifare,根据Evan在中的回答,为了更改某个扇区的身份验证密钥,我们需要覆盖该扇区第4个块(最后一个块)中的密钥 默认密钥始终为“FF FF FF FF FF”,这是一个六字节密钥。现在,如果我尝试使用中的write方法对其进行更改,则会引发索引错误,因为每个块必须为16字节,但身份验证密钥只有6字节长 我哪里做错了 该设备是RC522,我在Raspberry Pi 3上使用Raspbian。您只能在MIFARE经典卡上写入整个区块。因此,您需要写入完整的扇区尾部,而不仅仅是键A(前6个字节) 完整的扇

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

默认密钥始终为“FF FF FF FF FF”,这是一个六字节密钥。现在,如果我尝试使用中的
write
方法对其进行更改,则会引发
索引错误
,因为每个块必须为16字节,但身份验证密钥只有6字节长

我哪里做错了


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

您只能在MIFARE经典卡上写入整个区块。因此,您需要写入完整的扇区尾部,而不仅仅是键A(前6个字节)

完整的扇形拖车如下所示:

+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | KEY A | ACCESS BITS | GP | KEY B | +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
最后,要注意你在片区预告片上写的内容。访问位由冗余机制保护。如果将无效访问位写入尾部块,则整个扇区将不可逆地被阻塞。

扇区尾部是指扇区的最后一个块?例如,如果
SelectTag
返回
8
,这是否意味着密钥信息将存储在块
7
中? +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | KEY A | ACCESS BITS | GP | KEY B | | 11 22 33 44 55 66 | FF 07 80 | 00 | 00 00 00 00 00 00 | +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+