我们从供应商处收到 Mifare 4k 卡,该供应商对每个扇区预告片进行如下预编码:
FFFFFFFFFFFFFF078069FFFFFFFFFFFF
这样做时,供应商将访问位设置为FF0780
并且读取密钥(密钥 A)和写入密钥(密钥 B)保持出厂默认设置FFFFFFFFFFFF
当尝试使用 pyscard 和编码器 ACR1252 写入新的读取密钥(密钥 A)和写入密钥(密钥 B)和访问位时,我收到响应代码“99”,这是一个未记录的错误代码。我认为发生这种情况是因为访问位已更改,因为直接来自工厂的空白卡不会产生此错误。
在这个例子中,我们更新了尾部块,使得 Key A 和 Key B 是FFFFFFFFFFFF
并且访问位是787788
:
write_data = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x77, 0x88, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
write_key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
# load write key
_, response_code, _ = cardservice.connection.transmit([0xFF, 0x82, 0x00, 0x01, 0x06, *write_key])
# authenticate write key
_, response_code, _ = cardservice.connection.transmit([0xFF, 0x86, 0x00, 0x00, 0x05, 0x01, 0x00, block, 0x61, 0x01])
# write data
_, response_code, _ = cardservice.connection.transmit([0xFF, 0xD6, 0x00, block, 0x10, *write_data])
知道为什么供应商设置了访问位的卡返回响应代码 99 吗?
注意:身份验证工作正常,只是写入步骤失败。