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

为CPR 40.30读卡器编写基于主机的NFC卡仿真

满子实
2023-03-14

HCE是在Android 4.4中实现的,但是关于如何在模拟卡中写入的信息很少。

  • 我有心肺复苏40.30阅读器
  • 这个读者带来了一些样本NFC卡。我使用NFC读卡应用程序读取这些卡。

与CPR 40.30兼容的NFC卡详细信息

IC制造商:恩智浦半导体

IC type:
MIFARE Ultralight (MF0ICU1)

-- NDEF ------------------------------

NFC data set storage not present:
Maximum NDEF storage size after format: 46 bytes

-- EXTRA ------------------------------

 Memory size:
64 bytes total memory
* 16 pages, with 4 bytes per page
* 48 bytes user memory (12 pages)

-- TECH ------------------------------

 Technologies supported:
ISO/IEC 14443-3 (Type A) compatible
ISO/IEC 14443-2 (Type A) compatible

Android technology information:
Tag description:
* TAG: Tech [android.nfc.tech.NfcA, android.nfc.tech.MifareUltralight, android.nfc.tech.NdefFormatable]
android.nfc.tech.NdefFormatable
android.nfc.tech.MifareUltralight
android.nfc.tech.NfcA
* Maximum transceive length: 253 bytes
* Default maximum transceive time-out: 2000 ms

Detailed protocol information:
ID: 04:AC:91:52:CB:29:80
ATQA: 0x4400
SAK: 0x00

我想写HCE代码,希望我的Android手机像一张卡片一样,可以被CPR 40.30阅读器读取。我假设HCE代码应该模拟具有上述规格的卡,因为读卡器可以读取上述NFC卡。

到目前为止,我找到的唯一有用的HCE示例代码是这个,但它使用ISO-DEP。我想使用NFC-A(ISO/IEC 14443 A型)。

如何编写代码来模拟NFC-A卡?

参考链接:

  • https://developer.android.com/guide/topics/connectivity/nfc/hce.html
  • http://blog.opendatalab.de/hack/2013/11/07/android-host-card-emulation-with-acr122/
  • Android Kitkat 4.4的Java卡小程序和基于主机的卡仿真
  • 使用Arduino的Android主机卡仿真
  • NFC主机卡仿真(HCE)

共有1个答案

微生鸿轩
2023-03-14

Android仅支持在ISO-DEP(ISO/IEC 14443-4)的基础上模拟ISO/IEC 7816-4应用程序结构。Android API不提供任何访问较低协议层仿真的方法。

来自开发者指南:

具体来说,Android 4.4支持基于NFC论坛ISO-DEP规范(基于ISO/IEC 14443-4)和ISO/IEC 7816-4规范中定义的过程应用协议数据单元(APDU)的模拟卡。

请注意,CPR 40.30也应该支持ISO-DEP。

 类似资料:
  • 我开发了一个系统,可以使用带有PN532芯片的阅读器读取NFC标签。它工作正常。我可以阅读米费尔经典和米费尔超轻标签。 现在我想使用带有Android 4.4.2的Nexus平板电脑来模拟标签。我没有Android开发经验,但我认为这是可能的。 我已经在Nexus平板电脑中设置了NFC通信,但我想我必须下载或编写一些应用程序来模拟Tag和NDEF通信。 最简单的方法是什么?

  • 我正在尝试使用ACR1281U NFC标签阅读器在Android设备上进行主机卡仿真。 这就是我想申请的类型。 根据Android文档和示例,需要在Android项目中注册一个AID: 我如何知道我需要在我的Android应用程序中注册哪些AID,以便读者可以阅读HCE Android应用程序? 这里是我发布的另一个关于同样问题的问题:没有找到支持的卡终端ARC1281U nfc读卡器 我参考了以

  • 通过阅读《HCE开发者指南》,这里的《HCE开发者指南》似乎可以将android手机用作阅读器。我把卡片信息放在NFC标签上,然后用手机读。我想让手机充当阅读器。你知道这是否可行吗?我创建了一个示例项目,其中包含以下代码行: 我不知道下一步该去哪里。

  • 我正在尝试使用NFC读卡器库读取Mifare超轻型卡的内容。 我对NFC完全陌生,我正在使用这个github存储库开始。 此存储库中的代码允许检测检测到哪种类型的卡(Mifare,Mifare超轻量级......)并读取卡的UID。我添加了以下代码以读取Mifare超轻型卡的内容: 我有一张卡片,上面写着“Hello world”,当我读到它时,上面的代码会打印以下字节: 所以我从我的卡片上读了一

  • 我有一台LG D320nAndroid手机,elechouse的PN532 nfc模块和斯托尔曼的NFCPlayer,我可以用它正确阅读NFC标签。 我在这里测试了一个样本:https://github.com/grundid/host-card-emulation-sample 当我把一台Android设备读作标签,另一台Android设备读作阅读器时,它工作得很好。但我无法通过NFCPlaye

  • 我想通过NFC从Arduino向手机发送信息。 为此,我有一个PN532模块。我想要发送信息的方式是使用模块模拟NFC标签并从手机读取信息。我不想使用真正的NFC卡的原因是内存限制。它们中的大多数都有近800字节的内存,而内存更多的内存则比较昂贵。如果我模拟带有PN532模块的卡,我还会有一些内存限制吗? 我在文件中发现了这一点: PN532-HCE 我认为重要的是APDU字节限制。我不是NFC方