【问题标题】:How Can i read mifare classic 1k Card by Nexus s我如何阅读 Nexus s 的 mifare classic 1k Card
【发布时间】:2011-04-14 05:52:16
【问题描述】:

我正在使用 NFC Android 编程,我想读取 Mifare Classic 卡。有人知道如何从这样的卡上读取扇区吗?

Authentication 方法返回 true 表示认证完成。身份验证后,扇区应该为任何 IO 操作做好准备,但是每当我使用 readBlock() 方法或 transceive() 方法时,我都会遇到 IOException("transceive failed") 异常。我找不到任何使用 Mifare Classic 的示例,所以我想知道是否可以使用此 API 阅读 Mifare Classic。

我的代码是这样的boolean success = m1tag.authenticateSectorWithKeyB(0,MifareClassic。KEY_DEFAULT) int index = m1tag.sectorToBlock(0) byte[] content = m1tag.readBlock(index)

成功是真的,但是当我从卡中读取内容时,抛出 IOException("transceive failed")

【问题讨论】:

    标签: android nfc nexus-s


    【解决方案1】:

    使用authenticateSectorWithKeyB() 后,您将无法使用readBlock()writeBlock()。 如果它是具有默认访问位的新标签,则对标签的访问将被阻止。如果访问条件已更改,则readBlock()writeBlock() 将引发异常。您必须使用 KeyA 身份验证来读取标签。

    【讨论】:

      【解决方案2】:

      您无法通过 keyB 进行身份验证来读取 mifare 卡的 Block。 要读取 Mifare 卡块,您必须使用密钥 A 进行验证,即使用 authenticateSectorWithKeyA() 而不是 authenticateSectorWithKeyB()

      【讨论】:

      • 这不是真的。根据扇区尾部中块的访问控制配置,密钥 B 可用于读取块。但是,制造商的默认配置(“空卡”)是无法使用密钥 B 读取块的。
      • @NFCguy 能否请您对stackoverflow.com/questions/17220523/…提出宝贵意见
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多