我的目标是仅进行 KEY A 身份验证并禁用 Key B(用于存储数据的空间)。
我阅读了这些文档:
- http://www.nxp.com/documents/data_sheet/MF1S503x.pdf
- http://dangerousthings.com/wp-content/uploads/2012/08/NFC-Access-Control-for-Mifare-S50.pdf
我明白如何计算这三个字节的十六进制值。
但我不明白如何选择好的数据块和访问字节规则 :
- 数据块规则
在这里,我只想保留密钥 A(R 和写入数据)并停用密钥 B。我选择了第一条规则:C1=0 C2= C3=0。这是正确的吗?
- 访问字节规则
我想仅使用密钥 A,以便能够更改密钥 A 值(写入)- 访问位:读/写密钥 A。所以我选择 C1=0 C2=0 和 C3=1。它是否正确?
最终结果为字节6=F8,字节7=77,字节8=80
当我将这些值写入 MIFARE 卡时,它不正确。
你能帮我找到物有所值的吗?
您选择的访问字节解码为 C1=7、C2=0、C3=8,因此您有
- Sector trailer: C13, C23, C33 = 0, 0, 1
- Data blocks: C10,1,2, C20,1,2, C30,1,2 = 1, 0, 0
因此,您选择扇区尾部可使用密钥 A 写入并使用密钥 A 可读(除了密钥 A 本身)。因此,不存在密钥 B。因此,对于数据块,这意味着可以使用密钥 A 读取它们,但是无法进行写入(由于缺少密钥 B)、递增等。
如果您希望仅使用密钥 A 进行读/写访问,则可以使用如下所示的内容:
- Sector trailer: C13, C23, C33 = 0, 0, 1
- Data blocks: C10,1,2, C20,1,2, C30,1,2 = 0, 0, 0
这将导致访问字节 C1=0、C2=0、C3=8:
FF 07 80
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)