6

我错误地覆盖了我的 Mifare 经典 1k 标签之一的扇区 1 块 7。它用于测试,我在第 7 块中写入的 16 字节数据如下所示:

0xaa 0xaa 0xaa 0xaa
0xbb 0xbb 0xbb 0xbb
0xcc 0xcc 0xcc 0xcc  
0xdd 0xdd 0xdd 0xdd

如果没有记错的话,通过这样做,我的访问密钥和权限位变为如下:

  • 键-A:0xaa 0xaa 0xaa 0xaa 0xbb 0xbb
  • 键-B:0xcc 0xcc 0xdd 0xdd 0xdd 0xdd
  • 权限位:-->0xbb 0xbb 0xcc

我曾尝试使用Key-AKey-B如上所示读取/写入block 7. sector 1但是我不再能够访问(不能读取或写入)任何块sector 1

我知道所有其他部门(例如sector 0sectors 2-15)的密钥并且能够访问它们。

考虑到这种情况,我想知道是否有任何方法可以重置sector 1block 7重新获得我的访问权限。非常感谢。

更新:

我已经确认上面显示的 Key-A 和 Key-B 都是正确的,我可以使用它们对卡进行身份验证。此外,根据Mifare Classic 规范截图),我的访问位如下:

字节 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

字节 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_3C2_3C3_3启用对sector-trailer. 就我而言,对于第 7 块(第 7 区的预告片),它们都设置为1. 那么我是否应该没有对该块的写访问权?

4

2 回答 2

6

一旦访问控制位配置不正确(例如,应该相互补码的位不是互补的,就像您的情况一样),则根本无法再访问该扇区。

于 2013-02-02T19:34:40.990 回答
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 始终可以被读取。也许这就是您可以进行身份​​验证的原因。

于 2013-08-29T20:46:32.813 回答