我知道这篇文章: - Locking mechanism of Mifare Classic 1K
然而,实际上并不清楚 - 如何在此字符串中计算FF 07 80 FF
之类的值:
D3 F7 D3 F7 D3 F7 FF 07 80 FF 00 00 00 00 00 00
这意味着可以使用密钥A读取块并使用密钥B写入但不允许使用inc / dec。
如果我必须支持递增和递减操作,访问位应该如何。我知道C1,C2和C3必须是1,1,0这是如何反映到字节6,7和8的。
任何帮助都会非常感激。
答案 0 :(得分:5)
访问位FF 07 80
转换为
C1 = 0x0 => C1_3 = 0, C1_2 = 0, C1_1 = 0, C1_0 = 0
C2 = 0x0 => C2_3 = 0, C2_2 = 0, C2_1 = 0, C2_0 = 0
C3 = 0x8 => C3_3 = 1, C3_2 = 0, C3_1 = 0, C3_0 = 0
因此,可以使用仅限密钥A (Cx_3 = 0 0 1
)来读取和编写扇区预告片。所有操作(读,写,递增,递减等)都可以使用键A (Cx_{0,1,2} = 0 0 0
对数据块执行,由于预告片的访问条件,键B被禁用块)。
如果您希望能够使用键A读取所有块,使用键B写入,使用键B执行值块增量并使用键A和B执行值块减少等,您可以使用如下访问条件:
Cx_3 = 0 1 1
数据/值块:使用键A读取/递减,使用键B写入/递增:Cx_{0,1,2} = 1 1 0
C1_3 = 0, C1_2 = 1, C1_1 = 1, C1_0 = 1 => C1 = 0x7
C2_3 = 1, C2_2 = 1, C2_1 = 1, C2_0 = 1 => C2 = 0xF
C3_3 = 1, C3_2 = 0, C3_1 = 0, C3_0 = 0 => C3 = 0x8
这会导致访问位08 77 8F
。因此,您的扇区预告片可能如下所示(键A = D3F7D3F7D3F7
且键B = 000000000000
):
D3F7D3F7D3F7 08778F FF 000000000000