我正在尝试检测 NFC 标签的制造商名称。我在这里找到了制造商代码。但我只能使用这些 ID 检测到 Mifare Ultralight C 标签。Ultralight C 标签 ID 的第一个字节代表制造商代码。但其他标签不包含此属性。这个应用程序可以检测 IC 制造商。是否可以检测其他 NFC 标签的制造商?
1 回答
对此当然没有万能的方法。NFC 标签的指纹识别(猜测制造商甚至是确切的标签类型)相当困难,您可能需要获取您想要检测的不同标签类型的各种数据表/用户手册。即使这样,大多数标签也不只是告诉你“我是由 Z 开发的 XY”。在某些应用程序用例中,甚至认为不希望透露制造商或产品代码(通常出于安全原因)。
但是,对于某些标签类型,有完善的机制来获取制造商标识符:
NfcA
具有 7 字节 UID(通过 获取)的标签Tag.getId()
将制造商的 ISO 7816-6 注册芯片制造商代码(参见您已经找到的列表、较新的列表或JTC1/SC17 文档库)编码为第一个字节那个UID。例如0x02
意法半导体、0x04
恩智浦、0x05
英飞凌等。NfcV
标签有一个 8 字节的 UID,其中制造商的 ISO 7816-6 注册芯片制造商代码(与 7 字节 UIDNfcA
标签相同)被编码为 UID 的第二个字节(注意NfcV
导致该字节的不同字节顺序是通过Tag.getId()
) 获得的倒数第二个字节。NfcF
标签通常有一个来自索尼的射频前端(至少我不知道有任何其他制造商)。不过,该前端可能会集成到其他制造商的产品中。Sony 提供一系列数据表/用户手册,为您提供足够的信息来区分不同的 FeliCa 标签。一些
IsoDep
标签(特别是那些遵循GlobalPlatform规范的智能卡)可能会通过其卡生产生命周期数据 (CPLC) 显示制造商信息。请参阅Nikolay 的博客文章和 GP 规范,了解如何从典型的 GP 兼容卡中获取这些信息。有关如何解释该信息,请参阅CPLC.java 。