【问题标题】:get challenge with arduino nfc MFRC522 module from an epassport从电子护照获得 arduino nfc MFRC522 模块的挑战
【发布时间】:2016-06-10 17:06:13
【问题描述】:

我正在使用我的 Ardunio 和 NXP 的非接触式读写器 MFRC522。我正在使用我的电子护照(欧盟标准),我想通过向其 RFID 芯片发送Get Challenge APDU 命令来启动基本访问控制 (BAC) 程序。

在 stackoverflow 中我找到了 APDU 00 84 00 00 08。为了在我的 Ardunio 项目中实现它,我使用了 miguelbalboa 库(访问 here)。在这个库中,有一种方法可以将数据发送到 RFID 芯片并存储其响应。但首先我得到了 ATQA,它是 ATR,相当于一张联系人卡片(在我的情况下是 00 08),然后是 SAK(在我的情况下是 20)。该库注意到它在我的电子护照中检测到符合 ISO/IEC 14443-4 的 PICC,最后我得到了它的随机 UID。下一步我尝试通过

来迎接挑战
// create MFRC522 instance „mfrc522“
// Init SPI bus 
// Init MFRC522 device
// Select RFID chip (PICC_Select method)
byte sendData[] = {0x00, 0x84, 0x00, 0x00, 0x08};
byte backLen = 10; // I know that the answer (= the challenge) is 8 bytes long + 2 bytes for SW1 + SW2
byte sendLen = sizeof(sendData);
byte backData[backLen];
MFRC522::StatusCode status = mfrc522.PCD_TransceiveData(sendData, sizeof(sendData), backData, &backLen);
// Print „status“

无论我做什么/更改/扩展,返回的 StatusCode 始终是

通讯超时

我不知道:我做错了什么?我现在怀疑这是一个编程错误,但可能是硬件问题?也许 MFRC522 上的 FIFO 缓冲区 不接受此命令,尽管我在其technical specs 中没有发现任何限制,但我在想:我所做的只是发送并根据 ISO/IEC 7816-4 标准使用 ISO/IEC 14443-4 非接触式 RFID 芯片接收字节……

编辑:我在智能手机中使用我的 NFC 设备和 Google Play 商店的 APDU 调试 应用程序尝试了 APDU 命令,它运行良好!所以芯片或APDU命令本身不可能是问题。

【问题讨论】:

    标签: arduino nfc rfid


    【解决方案1】:

    您是否尝试过发送 T=1 块?

    块格式 PCB|CID|INF|EDC。这在http://read.pudn.com/downloads64/ebook/225463/M305_DESFireISO14443.pdf中有描述

    我已成功将 GetVersion 发送到 DESFire,但尝试获取下一帧 (0xAF) 时超时

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 2020-06-14
      • 1970-01-01
      • 2018-08-10
      相关资源
      最近更新 更多