如何使用Android从NFC标签中检测制造商?

Mah*_*lon 2 tags android nfc fingerprinting

我正在尝试检测 NFC 标签的制造商名称。我在这里找到了制造商代码。但我只能使用这些 ID 检测 Mifare Ultralight C 标签。Ultralight C 标签 ID 的第一个字节代表制造商代码。但其他标签不包含此属性。此应用程序可以检测 IC 制造商。是否可以检测其他 NFC 标签的制造商?

Mic*_*and 5

对此,当然没有一劳永逸的方法。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标签通常有一个来自索尼的 RF 前端(至少我不知道任何其他制造商)。不过,该前端可能会被其他制造商集成到产品中。索尼提供了一系列数据表/用户手册,为您提供足够的信息来区分不同的 FeliCa 标签。

  • 某些IsoDep标签(特别是那些遵循GlobalPlatform规范的智能卡)可能会通过其卡生产生命周期数据 (CPLC) 显示制造商信息。请参阅Nikolay 的博客文章和 GP 规范,了解如何从典型的 GP 兼容卡中获取该信息。有关如何解释该信息,请参阅CPLC.java