【问题标题】:Can I recover a MIFARE Classic card?我可以恢复 MIFARE Classic 卡吗?
【发布时间】:2017-08-21 19:41:59
【问题描述】:

我的问题是我使用 Arduino 上的“读写”示例逐块重写 RFID 卡(MIFARE Classic 1K)。我从第 4 块开始写。在第 7 块它停止了,现在我无法读取任何扇区。我在每个块中都写了零。

DumpToSerial 函数只打印每个扇区

PCD_Authenticate() 失败:通信超时。

它仍然可以读取 UID、SAK 和 PICC 类型。

我是销毁了这张卡还是可以恢复它?

更多信息:

  • 卡:MIFARE Classic 1K
  • 来自 Elegoo 的 Arduino Mega2560
  • 入门套件中的 RC522

【问题讨论】:

  • 尝试在superuser 上发帖。 Stackoverflow 仅适用于编程问题。
  • 你在卡片上写了什么?你是从 0 到 7 还是从 63 到 7 逐块写的?你用了什么代码?
  • 我使用了一个循环,该循环应该从块 4 到 63 处处写入一个零(facepalm),在第 7 个块之后,我得到了错误,我停止了程序。在那之后我不能用卡做任何事情xD

标签: permissions arduino access-control rfid mifare


【解决方案1】:

对于 MIFARE Classic 1K,每第 4 个块是扇区尾部(每 4 个块被分组为一个扇区)。扇区尾部包含扇区的访问密钥(字节 0..5 上的密钥 A,字节 10..15 上的密钥 B)和访问条件(字节 6..8 上的访问位)。

访问条件受到冗余机制的保护,其中每个访问位在正逻辑和负逻辑中多次出现。 MIFARE Classic 卡允许用无效值(不可能的访问位组合)覆盖这些访问条件。然而,一旦访问条件被设置为这样一个无效值,芯片的安全逻辑将禁用对整个扇区的所有访问。因此,将无效访问条件写入扇区尾部会导致整个扇区不可用。此状态是永久的,无法恢复

您从第 4 块开始用全零编写了所有块。因此,您编写了扇区 1(在块 7 中)的扇区尾,访问条件设置为全零。这是访问条件的无效值。因此,扇区 1 永久不可用。由于您表示您在写入第 7 块后立即收到错误,因此您可能很幸运并且没有覆盖其他扇区尾部(例如第 2 扇区的第 11 块)。在这种情况下,那些其他扇区应该仍然可用。同样,由于您从第 4 块开始写入,第一个扇区(0 扇区,0..3 块)也应该仍然可以访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    相关资源
    最近更新 更多