更改 MIFARE Classic 中扇区的身份验证密钥
Changing authentication key of a sector in MIFARE Classic
根据 Evan 在 this page 中的回答,为了更改扇区的身份验证密钥,我们需要覆盖该扇区的第 4 个块(最后一个块)中的密钥。
默认密钥始终是 'FF FF FF FF FF FF',这是一个六字节密钥。现在,如果我尝试使用 pi-rc522 library 中的 write
方法更改它,它会引发 Index Error
,因为每个块必须为 16 个字节,但身份验证密钥只有 6 个字节长。
我哪里错了?
设备是 RC522,我在 Raspberry Pi 上使用 Raspbian 3.
您只能在 MIFARE Classic 卡上写入整块。因此,您需要编写完整的扇区尾部而不仅仅是密钥 A(前 6 个字节)。
完整的扇区预告片如下所示:
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| KEY A | ACCESS BITS | GP | KEY B |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
如果您希望该扇区的所有块 readable/writable 仅具有密钥 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 |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
最后,请注意您写入扇区尾部的内容。访问位由冗余机制保护。如果将无效的访问位写入尾块,整个扇区将被不可逆转地阻塞。
根据 Evan 在 this page 中的回答,为了更改扇区的身份验证密钥,我们需要覆盖该扇区的第 4 个块(最后一个块)中的密钥。
默认密钥始终是 'FF FF FF FF FF FF',这是一个六字节密钥。现在,如果我尝试使用 pi-rc522 library 中的 write
方法更改它,它会引发 Index Error
,因为每个块必须为 16 个字节,但身份验证密钥只有 6 个字节长。
我哪里错了?
设备是 RC522,我在 Raspberry Pi 上使用 Raspbian 3.
您只能在 MIFARE Classic 卡上写入整块。因此,您需要编写完整的扇区尾部而不仅仅是密钥 A(前 6 个字节)。
完整的扇区预告片如下所示:
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | KEY A | ACCESS BITS | GP | KEY B | +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
如果您希望该扇区的所有块 readable/writable 仅具有密钥 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 | +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
最后,请注意您写入扇区尾部的内容。访问位由冗余机制保护。如果将无效的访问位写入尾块,整个扇区将被不可逆转地阻塞。