【问题标题】:Arduino NFC Block Authenication FailedArduino NFC 块身份验证失败
【发布时间】:2014-07-14 17:34:57
【问题描述】:

我将 Arduino Mega 2560 与 SeeedStudio NFC shield 2.0 拼凑在一起,并使用了以下库:

我正在尝试将一些文本写入 MiFare Classic 卡(1024 位、32 个分区、64 位 ID),但我一直收到错误消息:

Error.Block 身份验证失败 4.

以下是我使用的程序:

#include <SPI.h>
#include "PN532_SPI.h"
#include "PN532.h"
#include "NfcAdapter.h"

PN532_SPI interface(SPI, 10);
NfcAdapter nfc = NfcAdapter(interface);

void setup(void) {
  Serial.begin(9600);
  Serial.println("NDEF Reader");
  nfc.begin();
}

void loop(void) {
    Serial.println("\nScan a NFC tag\n");
    if (nfc.tagPresent())
    {
        NfcTag tag = nfc.read();
        tag.print();

        Serial.println("Writing to tag...");

        NdefMessage message = NdefMessage();
        message.addTextRecord("Hello, Arduino!");
        nfc.write(message);
    }
    delay(5000);
}

谁能帮帮我?

【问题讨论】:

    标签: authentication arduino nfc mifare ndef


    【解决方案1】:

    此库仅适用于1根据恩智浦关于使用 MIFARE Classic 作为 NDEF 标签的应用说明预格式化的 MIFARE Classic 卡(请参阅AN1304 和 AN1305)和 可以使用 key A2 编写。

    您收到的错误表明,对于扇区 1(通常是 NDEF 应用程序的第一个扇区)无法使用 NDEF 应用程序的密钥 A (D3F7D3F7D3F7) 进行身份验证。因此,MF Classic 标签似乎没有预先格式化(例如,它可能处于传输配置中,所有密钥都设置为FFFFFFFFFFFF)。

    因此,你需要

    1. 创建应用程序目录,将所有扇区分配给 NDEF 应用程序 (E103)。有关示例,请参见 AN1304 中的附录 D。
    2. 写入分配给 NDEF 应用程序的扇区的所有扇区尾部以将密钥 A 设置为 D3F7D3F7D3F7,将 GPB 设置为 40,设置您的应用程序特定(秘密)密钥 B 并将访问条件设置为一个合理的价值。有关示例,请参见 AN1304 中的附录 D。
    3. 如果您将访问条件设置为允许使用密钥 A 写入的(不太明智的)值,则可以使用此 NDEF 库将您的 NDEF 消息写入标签。



    1) 事实上,这个库不遵循 AN1304/AN1305,甚至读取 NDEF 消息也仅适用于非常有限的子集 MIFARE Classic 标记用作 NDEF 标记。

    2) 用作 NDEF 标签的 MIFARE Classic 标签通常不能用公钥 A 写入,但(如果有的话)只能用密钥 B 写入。因此这个库的写入功能是使用非常有限。

    【讨论】:

    • Mifare Classic 格式已添加到最新版本。
    猜你喜欢
    • 2014-01-24
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2014-05-23
    相关资源
    最近更新 更多