我错误地覆盖了我的一个Mifare经典1k标签的第1区块7。它用于测试,我在块7上写的16字节数据如下所示:
0xaa 0xaa 0xaa 0xaa 0xbb 0xbb 0xbb 0xbb 0xcc 0xcc 0xcc 0xcc 0xdd 0xdd 0xdd 0xdd
如果没有弄错,通过这样做,我的访问密钥和权限位变为如下:
0xaa 0xaa 0xaa 0xaa 0xbb 0xbb
0xcc 0xcc 0xdd 0xdd 0xdd 0xdd
0xbb 0xbb 0xcc
我尝试使用上面显示的Key-A
和Key-B
在block 7
中读/写sector 1
。但是我再也无法访问{无法读取或写入sector 1
中的任何块。
我知道所有其他部门的密钥(例如sector 0
和sectors 2-15
)并且能够访问它们。
考虑到这种情况,我想知道是否有任何方法可以重置sector 1
或block 7
以重新获得我的访问权限。非常感谢。
更新
我已经确认上面显示的Key-A和Key-B都是正确的,我可以使用它们对卡进行身份验证。另外,根据Mifare Classic specification(screenshot),我的访问位如下:
Byte 6 = 0xbb = 0b10111011 -------------------------- C2_3 C2_2 C2_1 C2_0 C1_3 C1_2 C1_1 C1_0 1 1 0 1 1 1 0 1 Byte 7 = 0xbb = 0b10111011 -------------------------- C1_3 C1_2 C1_1 C1_0 C3_3 C3_2 C3_1 C3_0 1 1 0 1 1 1 0 1
现在,考虑到规范/屏幕截图,C1_3
,C2_3
和C3_3
位启用对sector-trailer
的读/写访问。在我的例子中,对于块7(扇区7的预告片),它们都被设置为1
。我不应该对这个块有写访问权吗?
答案 0 :(得分:6)
一旦未正确配置访问控制位(例如,应该是彼此补码的位不是互补的,就像你的情况一样),就不能再访问扇区了。
答案 1 :(得分:3)
在你所链接的Mifare经典规范中说:
备注:每次访问内存时,内部逻辑都会验证格式 访问条件。如果它检测到整个格式违规 部门被不可逆转地阻止了。
您的访问字节无法验证格式。在下面的表格中,〜表示倒置
Byte 6
--------------------------
~C2_3 ~C2_2 ~C2_1 ~C2_0 ~C1_3 ~C1_2 ~C1_1 ~C1_0
1 0 1 1 1 0 1 1
Byte 7
--------------------------
C1_3 C1_2 C1_1 C1_0 ~C3_3 ~C3_2 ~C3_1 ~C3_0
1 0 1 1 1 0 1 1
Byte 8
--------------------------
C3_3 C3_2 C3_1 C3_0 C2_3 C2_2 C2_1 C2_0
1 1 0 0 1 1 0 0
因此,例如,C2_3 = 1且~C2_3 = 1.它们不是互补的。格式未经验证,扇区被不可逆转地阻止。
在同一文档中有一个表(表7),表明keyA总是可以被加入。也许这就是你可以进行身份验证的原因。