当前位置: 首页 > 知识库问答 >
问题:

将 MIFARE DESFire EV1 配置为 NDEF 的 NFC 论坛类型 4 标签

裴泰平
2023-03-14

我开始在Android中使用NFC进行学习。我可以轻松地以NDEF格式读写。

我的问题是MIFARE DESFire EV1,我有一些工厂卡,我知道它们不符合NFC论坛类型4标签规范,因此不接受以NDEF格式读取或写入(在出厂配置中)。

我可以通过android.nfc.tech.NfcA或android.nfc.tech.IsoDep访问标签。

到目前为止,我知道我需要使用 IsoDep.transceive() 方法来传递命令,使我能够构建符合 NFC 论坛 Type 4 的标签。

但是我有很多麻烦。我正在使用TagWriter,它可以完美地完成这项服务。每次我使用NDEF数据集时,它都会自动执行一个例程,使该卡成为NFC论坛类型4标签,并因此成为NDEF标签。

然而,我自己找不到任何简单的例子来完成这个过程。即使看了规范文档NFCForum-TS-Type-4-Tag_2.0,我还是很失落。

TagWriter应用程序执行的过程是否有任何实际示例?

  • 识别NfcA/IsoDep(这里确定)
  • 使卡符合NFC论坛类型4标签规范
  • 开始将标签识别为android.nfc.tech.Ndef
  • 启用NDEF的读写

共有1个答案

汪弘光
2023-03-14

将MIFARE DESFire EV1准备为NFC论坛类型4标签(V2.0)的过程不是平台无关NFC论坛规范的一部分。相反,芯片制造商(恩智浦)在其应用笔记AN11004: MIFARE DESFire中将此程序定义为4类标签。程序如下:

>

  • 如果Android已经检测到Ndef标签技术,那么您就大功告成了。由于Android尝试检测NDEF标签应用程序和NDEF数据文件中包含的NDEF消息,因此找到Ndef标签技术意味着标签已经为NDEF准备好了(即它已经被配置为NFC论坛类型4标签)。

    否则,您将检查该标签是否真的是一个DESFire EV1标签。您可以根据AN10833: MIFARE类型识别过程中描述的类型识别过程以及从DESFire标签获得的版本信息来完成此操作。

    一旦您知道标签是一个DESFire EV1标签(并且您有足够的权限访问主应用程序以便对标签应用必要的修改,这可能需要和身份验证步骤),您将首先创建NDEF标签应用程序。这是一个DESFire应用程序,其ISO 7816-4 DF名称(=AID)在创建过程中设置为D2760000850101。您为DESFire AID选择的值,ISO文件ID对于正确的T4T操作并不重要(请注意,这与之前的EV1一代的desFire不同)。密钥设置取决于您的使用场景。在应用程序创建期间需要设置的唯一其他重要参数是允许应用程序中文件的ISO 7816-4文件标识符(密钥设置2字节中的第5位设置为“1”)。

    选择新创建的应用程序。

    创建一个新的标准数据文件,即能力容器文件,大小为15字节。您需要将ISO 7816-4文件ID设置为E103。通过将Com. Set. byte设置为0x00,确保允许纯通信。设置访问权限字段,以便稍后在初始化期间修改文件内容。

    创建另一个新的标准数据文件,即NDEF数据文件。如果您仅将标签用作NDEF标签,通常会使用所有剩余的可用空间。将ISO 7816-4文件ID设置为< code>E104。将Com.Set .字节设为0x00,确保允许普通通信。对于只读标签,将访问权限字段设置为0xE000对于应该允许通过< code>Ndef标签技术进行读写访问的标签,将访问权限字段设置为0xEEE0。

    选择功能容器文件并将功能容器数据写入其中:

    000F  20  003A  0034  04 06 E104 xxxx 00 yy
    

    其中xxxx是NDEF数据文件的大小,yy如果文件是可自由写入的,则为0x00,如果文件是只读的,则为0xFF。

    选择NDEF报文文件,并将前2个字节写入0x0000(以表示文件为空)。

    请注意,在DesFire(EV1)卡上创建NDEF标签应用程序结构需要您使用MIFARE desFire的本机命令集或包装的本机命令集。由于Android的某些版本会导致本机命令的已知问题,因此您最好使用包装的本机命令。您可以在DESFire产品数据表(仅在NXP的NDA下提供)中找到有关DESFire命令集的详细信息。

  •  类似资料:
    • 如何将NDEF消息写入NFC标记?我必须更改清单文件吗?到目前为止,我有生成NDEF消息的代码: 如何发现标签?有人能帮我吗?

    • 我有一个应用程序可以读取一个NDEF标签,没什么大不了的:-) 我找到了这个链接:如何发现NFC标签是否还在Android的范围内?什么是一个开始,但我不知道如何更新标签。 我很挣扎,我甚至不知道我尝试做的事情在技术上是否可行。 有没有人知道怎么做的?干杯 对不起,我试着看了一些教程和例子,但我还是不明白。 这是我的全部密码。读取标签需要长得多的时间,有时并不需要。我不知道如何和在哪里更新标签,以

    • UPB ( Ultimate PHP Board ) 是一个基于文本文件的论坛软件,无需数据库支持。

    • Make WordPress A Light Forum —— 不同于Mypress和Buddypress,Qing(轻论坛)是个WordPress主题 让你的WordPress站点拥有新一代社区的功能,并在持续改进中。 1.0.0新版本功能将会更新很多,例如消息提醒、私信、收藏、金币系统,现运行0.0.9版本演示http://uestc.tk   测试版http://v2ex.org

    • 我正在尝试创建一个 NFC 标签,该标签将触发两个单独的操作: 打开蓝牙连接 启动应用程序(或前往游戏商店) 我使用 nfc-eclipse-plugin 创建了一个包含两个合适记录的消息,但是,当写入标签时,它总是只触发第一个操作。两者都单独工作,但第二个总是被忽略。 我知道一个NFC标签上的2个NDEF消息/记录的答案-Android说你不能在一个标签上有两条独立的消息,只有一条消息中的多条记

    • 类似的问题 - 如何在Android中读取检测到的NFC标签(NDEF内容)详细信息? 我希望我的android应用程序能够读取和解析检测到的NDEF消息。 我已经编辑了AndroidManifest.xml来检测nfc标签,并添加了意图过滤器,如下所示 我相信这很好,因为当我使用SDK附带的NFCDemo示例应用程序创建MockNDEF标签时,当我可以选择处理这些生成的标签的应用程序列表出现时,