安卓NFC自动发送字节到模拟卡

4

我有一张SpringCard通过我的电脑在卡模拟模式下运行,并带有一个日志控制台。

一旦我使用开启了NFC(未运行任何应用程序)的Android手机(API 4.1.2)检查它, 我的手机将这些数据发送到模拟卡中:

1st set -> 90:60:00:00:00
2nd set -> 00:A4:04:00:07:D2:76:00:00:85:1:1:0

这些命令是什么?它们与我的Android设备有关,试图发现仿真卡使用的技术吗?

编辑

实际上,我已经了解了第二组命令(APDU选择)。

但似乎第一组命令是来自Android的专有APDU命令。这是否可能与NPP(NDEF推送协议)有关?

1个回答

9

这些命令是什么?

第一个命令(90 60 00 00 00)是一个 MIFARE DESFire GetVersion 命令(封装的命令集)。它似乎是针对基于 NXP 的 Android NFC 栈的特定命令,不属于典型的 NFC 标签检测流程。

第二个命令(00 A4 04 00 07 D2 76 00 00 85 01 01 00)是一个 SELECT APDU 命令,尝试通过其 AID 选择 NFC Forum Type 4 标签应用程序(版本 2.0)。这是 ISO 14443-4(ISO-DEP)标签/智能卡的典型标签检测流程的一部分。

为什么在应用程序被通知有标签存在之前发送这些命令,即使没有任何应用程序处于活动状态?

典型的 NFC 设备会自动发现包含 NDEF 消息的 NFC 标签。通常,这些 NDEF 消息会触发设备上的操作(例如启动应用程序)。由于您的标签似乎是符合 ISO 14443-4(ISO-DEP)标准的标签/智能卡,因此会启动 NFC Forum Type 4 标签的 NDEF 检测流程。此过程通常包含以下步骤:

  1. Select the NFC Forum Type 4 tag application (version 2.0)

    00 A4 04 00 07 D2 76 00 00 85 01 01 00
    
  2. If application selection is successful, continue with reading the capability container file and the NDEF data file.

  3. If application selection fails, continue with selecting the NFC Forum Type 4 tag application (version 1.0)

    00 A4 04 00 07 D2 76 00 00 85 01 00 00
    
  4. If application selection is successful, continue with reading the capability container file and the NDEF data file.

  5. If application selection fails, tag is not an NFC Forum Type 4 tag.

  6. Typically the connection to the tag is reset at this point so that any communication that an app performs with a tag is started right after a fresh activation of the tag.

在步骤1之前的附加命令表示NXP的NFC堆栈还尝试查找Type 4标签是否为NXP产品(NXP的MIFARE DESFire或DESFire EV1)。它与点对点模式协议无关。
关于Broadcom NFC堆栈的说明:已知存在一个问题,似乎仍然存在于Android 4.4上:即使将标签传递给应用程序并启动IsoDep通信,NFC堆栈任意发送READ BINARY命令与应用程序的通信交错。这经常导致由于无效的命令序列而产生协议错误。这种情况不会发生在NXP的NFC堆栈中。
我可以防止对标签进行初始处理吗?
是的,但只能在Android 4.4以上版本中使用NfcAdapter的enableReaderMode方法将设备置于读取器模式而没有NDEF发现。

感谢! 我注意到在这两个设置之后,我的Android发送了: 第3个设置-> 00:A4:00:0C:02:E1:03,这是另一个SELECT 第4个设置-> 00:B0:00:00:0F,这就是你提到的“著名”READ BINARY。 - a.cee
第三个是Type 4标签应用程序的能力容器的SELECT文件,第四个命令是READ BINARY。你是否可以以状态码0x9000或其他不可解释为ISO 7816-4 R-APDU的方式响应所有这些命令?否则,我认为设备在选择失败后仍然继续访问Type 4标签应用程序真的很奇怪。顺便说一下,这个版本不是“著名”的READ BINARY命令,因为Broadcom的命令甚至没有正确格式化 :-(,它看起来像这样:00 B0 00 00(请注意缺少的Le字段!) - Michael Roland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接