Arduino NFC块认证失败

问题描述 投票:0回答:2

我用SeeedStudio NFC shield 2.0拼凑了Arduino Mega 2560,并使用了以下库:

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

错误块身份验证失败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
2个回答
0
投票

该库仅适用于根据NXP的使用MIFARE Classic作为NDEF标签(请参阅AN1304AN1305)的恩智浦应用说明进行了预格式化的MIFARE Classic卡1 键A 2您收到的错误表明,对于扇区1(通常是NDEF应用程序的第一个扇区),无法使用NDEF应用程序的密钥A(D3F7D3F7D3F7)进行身份验证。因此,MF经典标签似乎未预先格式化(例如,它可能处于传输配置中,并且所有键都设置为FFFFFFFFFFFF)。

因此,您需要

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


1

)实际上,该库并不遵循AN1304 / AN1305,甚至NDEF消息的reading仅适用于用作NDEF标签的MIFARE Classic标签的非常有限的子集

2

)用作NDEF标签的MIFARE Classic标签通常不能与公钥A一起写入,而只能与私钥B一起写入(如果有的话)。因此,该库的写功能用途非常有限。

0
投票
我使用的是同一个库,我有2个问题(也发布在github上)。也许有人可以帮我吗?抱歉,但是在github以外的地方找不到在线参考/文档。
© www.soinside.com 2019 - 2024. All rights reserved.