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

JavaCard可以模拟MIFARE Ultralight或NTAG NFC标签吗?

东郭自强
2023-03-14

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

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

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

更新到原始问题

我想我问错了我原来的问题。我不希望每个sé都模拟一个特定的标签。我实际上正在尝试使用Java Card powered card,以便能够使用新的核心NFC API向Android或苹果iPhone等智能手机提供动态信息。注意,据说这个API支持类型1到5的标签。我希望能够编写一个Java Card applet,它可以在非接触式智能卡上运行,并允许与智能手机进行(单工)通信

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

共有2个答案

许安邦
2023-03-14

虽然NTAG 2xx是不可行的,正如迈克尔·罗兰上面解释的那样,人们可以编写一个小程序。T4T。然而,不确定这是否值得努力,因为NTAG 2xx以及DesFire或NTAG 413脱氧核糖核酸可能都便宜得多。当然,作为一个技术挑战,这可能是值得做的。

芮明知
2023-03-14

不,这是不可能的。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 Ultralight/NTAG  |  | Contactless Java Card   |
+-------------------------+  +-------------------------+

                             +-------------------------+
                             | Commands: APDUs         |
                             | (ISO/IEC 7816-4)        |
+-------------------------+  +-------------------------+
| Commands: Proprietary   |  | ISO-DEP                 |
| or NFC Forum Type 2ary  |  | (ISO/IEC 14443-4)       |
+-------------------------+  +-------------------------+
| Framing: NFC-A          |  | Framing: NFC-A or NFC-B |
| (ISO/IEC 14443-3 A)     |  | (ISO/IEC 14443-3 A/B)   |
+-------------------------+  +-------------------------+
|           ...           |  |          ...            |
+-------------------------+  +-------------------------+

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

编辑(基于ErikM的评论):

虽然不可能在Java卡上模拟NFC Forum Type 2标签(除非您的智能卡平台上有专用硬件支持——而且我认为目前不存在这种情况),但您可以在任何Java卡非接触式智能卡上轻松模拟NFC论坛Type 4标签。因此,如果你的目标是模拟一个NFC标签,它向智能手机等呈现NDEF消息,那么你可以遵循这种方法。甚至有这样的小程序的开源实现,例如。

  • https://github.com/promovicz/javacard-ndef
  • https://github.com/slomo/ndef-javacard
 类似资料:
  • Apple刚刚向公众宣布了新的NFC Core API。 这是他们说的。 核心NFC 借助 Core NFC 框架,您的应用现在可以支持标记写入,包括写入 NDEF 格式的标记。该框架还支持使用本机协议(如 ISO 7816、MIFARE、ISO 15693 和 FeliCa)读取和写入标签。有关详细信息,请参阅核心 NFC 框架文档。 https://developer.apple.com/io

  • 问题内容: 我在HTML页面上有几个具有相同类的元素-但是它们是不同的元素类型。我想在遍历元素时找出元素的标签名称-但是.attr不会使用“标签”或“标签名称”。 这就是我的意思。考虑页面上的以下元素: 现在,我想运行类似的代码,以确保所有元素都具有一个ID(如果尚未定义): 我想要的结果是H2和H4元素的ID为 分别。 关于如何发现“ this”表示的元素的标签名称的任何想法? 问题答案: 应该

  • Volar 相关的插件我都安装了 但是 <template> 中的内容,都没有智能提示,也没有办法按 ctrl+鼠标左键跳转 比如我把鼠标悬停在 a-range-picker 的 @change 上,也没有办法给我任何提示,比如返回值类型等等 是 vscode 以及相关插件没有这个功能吗?

  • 问题内容: 想象一下,当从控制台调用NodeJS模块时,它会输出一些介绍性消息,然后等待用户输入(单击enter或esc)。该模块已经具备并完成了我们所需的一切,除了- 等待用户输入提示。因此,我们想知道(我个人对NodeJS还是很陌生的)是否有可能以编程方式执行控制台模块并触发其上的输入事件,以便它不等待并立即进行工作? 问题答案: 您可以为此使用RobotJS。 示例代码:

  • 首先,感谢您之前的所有建议。 我遇到了一个相当棘手的小问题。 我有一个字符串,我想显示到一个标签中,通常没有问题,但字符串比标签允许的要长。然而,使用swt awt hybrid解决了文本框的类似问题。我想做的是用标签复制这个。 有办法解决这个问题吗?或者,解决方法是让文本区域将text设置为所需的文本,然后将text enable设置为false,使其为灰色文本。 有人能给点建议吗?

  • 我们正在使用MIP SDK来保护我们的文件(使用模板和特殊配置进行加密)。经过长时间的搜索,我没有找到创建新模板或天堂标签的方法。你知道这是否可能,或者微软在路线图中是否具备这一能力吗?