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