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

Jon*_*nny 4 tags android nfc mifare ndef

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

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

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

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

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

但是,我找不到任何简单的示例来自己执行此过程。即使阅读了规范文档NFCForum-TS-Type-4-Tag_2.0,我仍然很迷茫。

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

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

Mic*_*and 6

将 MIFARE DESFire EV1 准备为 NFC 论坛类型 4 标签 (V2.0) 的程序不是平台独立的 NFC 论坛规范的一部分。相反,该程序由芯片制造商 (NXP) 在其应用笔记AN11004:MIFARE DESFire as Type 4 Tag 中定义。该程序是关于以下内容:

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

  2. 否则,您将检查标签是否真的是 DESFire EV1 标签。您可以根据AN10833:MIFARE 类型识别程序中描述的类型识别程序并基于从 DESFire 标签获得的版本信息来执行此操作。

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

  4. 选择新创建的应用程序。

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

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

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

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

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

  8. 选择 NDEF 消息文件并将前 2 个字节写入 0x0000(以指示该文件为空)。

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