【问题标题】:Can a JavaCard emulate a MIFARE Ultralight or NTAG NFC tag?JavaCard 可以模拟 MIFARE Ultralight 或 NTAG NFC 标签吗?
【发布时间】:2017-06-26 13:39:54
【问题描述】:

我想编写一个响应 NFC 读取器的 Java Card 小程序,就好像它是一个普通的 MIFARE Ultralight 或 NTAG NFC 标签一样。

我知道 MIFARE 协议是专有的,可能有点困难,但我肯定能够实现对 NTAG 协议的仿真。

如果我符合 NTAG 规范并响应正确的 APDU,那么我肯定可以模拟 NTAG?

更新原始问题

我想我最初的问题问错了。我不想模仿每个 sé 的特定标签。我实际上想要做的是使用 Java Card 驱动的卡,以便能够使用新的Core NFC API 向智能手机(如 Android 或 Apple iPhone)提供动态信息。请注意,据说这个 API 支持类型 1 到 5 的标签。我希望能够编写一个 Java Card 小程序,它可以在非接触式智能卡上运行并允许与智能手机进行(单工)通信。

我想我的问题是:如何确定来自 Core NFC API 的 APDU 流,以便我可以编写一个能够适当响应的小程序?

【问题讨论】:

    标签: nfc javacard mifare apdu contactless-smartcard


    【解决方案1】:

    不,这是不可能的。 MIFARE Ultralight、NTAG 和其他 NFC Forum Type 2 标签在 ISO/IEC 14443-3A(也称为 NFC-A)中定义的防冲突和帧协议之上运行。

    Java Card 小程序(通常)使用 APDU 命令(ISO/IEC 7816-4 中定义的协议层)进行通信。 Java Card 运行时环境仅将 APDU 命令传递给小程序。非接触式智能卡在 ISO-DEP 半双工传输协议(如 ISO/IEC 14443-4 中规定)之上交换这些 APDU 命令。反过来,此传输协议位于 ISO/IEC 14443-3(也称为 NFC-A 和 NFC-B)中定义的帧协议之一之上。

    +--------------+ +---------- ---+ | MIFARE 超轻/NTAG | |非接触式 Java 卡 | +--------------+ +---------- ---+ +--------------+ |命令:APDU | | (ISO/IEC 7816-4) | +--------------+ +---------- ---+ |命令:专有 | | ISO-DEP | |或 NFC 论坛类型 2ary | | (ISO/IEC 14443-4) | +--------------+ +---------- ---+ |框架:NFC-A | |框架:NFC-A 或 NFC-B | | (ISO/IEC 14443-3 A) | | (ISO/IEC 14443-3 A/B) | +--------------+ +---------- ---+ | ... | | ... | +--------------+ +---------- ---+

    因此,虽然这两种技术共享共同的协议层,但 Java Card 小程序只能交换 APDU 命令,而不能直接控制许多较低的协议层。

    编辑(基于ErikM's remark):

    虽然无法在 Java Card 上模拟 NFC Forum Type 2 标签(除非您的智能卡平台上有专门的硬件支持 --- 而且我认为这目前不存在。),您可以轻松地模拟一个任何 Java Card 非接触式智能卡上的 NFC Forum Type 4 标签。因此,如果您的目标是模拟 NFC 标签,将 NDEF 消息呈现给例如智能手机,那么您可以采用这种方法。甚至还有此类小程序的开源实现,例如

    【讨论】:

    • 感谢有趣的回答。我现在更新了我的问题,使其更加具体。
    • @conor 这个问题的答案基本上是 ErikM 写的以及我在答案底部编辑的内容。您可能想要实现类型 4 标记。
    【解决方案2】:

    虽然 NTAG 2xx 不可行,但正如 Michael Roland 上面解释的那样,可以编写一个 applet acc。到 T4T。但是不确定是否值得付出努力,因为 NTAG 2xx 以及 DESFire 或 NTAG 413 DNA 都可能更便宜。当然,作为一项技术挑战,它可能值得一试。

    【讨论】:

    • 感谢有趣的回答。我现在更新了我的问题,使其更加具体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多