DESFire EV1 卡仿真

DESFire EV1 card emulation

我需要在 Android 设备上模拟 DESFire EV1 卡。但是,我对如何将 Mifare SDK(精简版或高级版)与 HCE 结合使用感到困惑。

这可能吗?我需要启动这个项目,我对数据如何在 DESFire 卡中存储和加密进行了大量研究,但最终我发现我需要在 HCE 上使用 Mifare SDK。

我认为 Mifare SDK 是:

http://www.mifare.net/en/products/mifare-sdk/

如果是,那么通过简单搜索 "Mifare SDK HCE",我发现: http://www.mifare.net/en/micommunity/forum/mifare-and-nfc-reader-ics/can-nfc-phones-operate-rfid-tag-mifare-classic/ 在这个帖子中,Mifare 人说:

Unfortunately the MIFARE SDK does not support HCE.

MIFARE Classic 无法在 HCE 中仿真,因为它直接在 ISO 14443-3 之上运行。 HCE 模拟更高层,ISO 14443-4。 但那是实施 MIFARE DESFire 的层,所以是的,它可以完成。我自己没有做过,但我知道至少有一家公司已经做到了,而且可能还有几家。

首先,您不能使用MIFARE SDK模拟卡片。 MIFARE SDK 仅提供 reader 端功能。

其次,您无法使用 Android HCE 模拟 MIFARE DESFire (EV1) 卡的全部功能。但是,您可以模拟部分 MIFARE DESFire 协议(更具体地说,您只能模拟 ISO/IEC 7816-4 框架(ISO 命令集或包装的本机命令集)并且只有在前面有 ISO SELECT 通过 AID 命令)。这是否足够取决于系统 reader 端的要求。

  • 如果您的 reader 仅支持 DESFire 本机命令集:您无法使用 Android HCE 模拟相应的卡。
  • 如果您的 reader 使用包装本机命令集但不启动与 ISO SELECT(通过 AID)命令的通信:您无法使用 Android 模拟相应的卡HCE.
  • 如果您的 reader 使用包装本机命令集并使用 ISO SELECT(通过 AID)命令开始通信(MIFARE DESFire 的 AID 为 D2760000850100):您可以为 DESFire AID 注册您的 HCE 服务,并且在选择此 AID 后将能够接收所有包装的本机命令。
  • 如果您的 reader 使用 ISO 命令集但第一个命令不是 ISO SELECT(通过 AID)命令:您无法使用 Android HCE 模拟相应的卡。
  • 如果您的 reader 使用 ISO 命令集并启动与 ISO SELECT(通过 AID)命令的通信(对于 MIFARE DESFire AID 或(对于 DESFire EV1)对于 ISO DESFire 应用程序之一的 AID):您可以为 DESFire AID(或特定应用程序的 AID)注册您的 HCE 服务,并且在选择此 AID 后将能够接收所有 ISO 命令。

请注意,如果您模拟 MIFARE DESFire 卡,可能会出现许可问题。