我正在尝试检测NFC标签的制造商名称。我发现制造商代码here。但我只能用这些ID检测到Mifare Ultralight C标签。ultralight c标签id的第一个字节表示制造商代码。但其他标记不包含此属性。This app可以检测到ic制造商。是否可以检测制造商是否有其他NFC标签?
最佳答案
当然,没有人能一概而论。NFC标签的指纹识别(猜测制造商,甚至是准确的标签类型)相当困难,您可能需要为要检测的不同标签类型获取各种数据表/用户手册。即使这样,大多数标签也不会告诉你“我是z开发的xy”。在某些应用程序用例中,甚至被认为不希望(通常是出于模糊原因的安全考虑)公开制造商或产品代码。
但是,对于某些标签类型,有一些成熟的机制来获取制造商标识符:NfcA
具有7字节uid(通过Tag.getId()
获取)的标记将制造商的iso 7816-6注册芯片制造商代码(参见list that you already found、anewer list或JTC1/SC17 document library)编码为该uid的第一个字节。例如,对于stmicroelectronics,0x02
对于nxp,0x04
对于infineon等。0x05
标记有一个8字节的uid,其中制造商的iso 7816-6注册芯片制造商代码(与7字节的uidNfcV
标记相同)被编码为uid的第二个字节(注意NfcA
的不同字节顺序,这导致该字节是通过NfcV
获得的最后第二个字节)。Tag.getId()
标签通常有一个来自索尼的射频前端(至少我不知道其他制造商)。不过,这一前端可能会被其他制造商整合到产品中。索尼提供了一个series of datasheet/user manuals给你足够的信息来区分不同的felica标签。
一些NfcF
标签(特别是那些遵循GlobalPlatform规范的智能卡)可能通过其卡生产生命周期数据(cplc)显示制造商信息。请参阅Nikolay's blog post和GP规范,了解如何从典型的GP兼容卡中获取。有关如何解释该信息,请参见CPLC.java。