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

时间:2015-07-05 18:31:59

标签: android tags nfc fingerprinting

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

1 个答案:

答案 0 :(得分:3)

当然,没有任何一种方法可以解决这个问题。 NFC标签的指纹识别(猜测制造商甚至是确切的标签类型)相当困难,您可能需要获取要检测的不同标签类型的各种数据表/用户手册。即便如此,大多数标签并不只是告诉你“我是由XY开发的XY”。在某些应用程序用例中,甚至被认为是不合需要的(通常出于安全性原因)揭示制造商或产品代码。

但是,对于某些标记类型,完善的机制来获取制造商标识符:

    具有7字节UID(通过NfcA获取)的
  • Tag.getId()个标签对制造商的ISO 7816-6注册芯片制造商代码进行编码(参见list that you already found,一个newer listJTC1/SC17 document library)作为该UID的第一个字节。例如。 STMicroelectronics 0x02,恩智浦0x04,英飞凌0x05

  • NfcV标签有一个8字节的UID,其中制造商的ISO 7816-6注册芯片制造商代码(与7字节-UID NfcA标签相同)被编码为第二个UID的字节(注意NfcV的不同字节顺序,这导致该字节是通过Tag.getId()获得的第二个最后一个字节。)

  • NfcF标签通常有一个来自索尼的RF前端(至少我不知道任何其他制造商)。然而,该前端可能被其他制造商整合到产品中。索尼提供series of datasheet/user manuals,为您提供足够的信息来区分不同的FeliCa标签。

  • 某些IsoDep代码(特别是那些符合GlobalPlatform规范的智能卡)可能会通过其卡片生产生命周期数据(CPLC)显示制造商信息。请参阅Nikolay's blog post和GP规范,了解如何从典型的GP兼容卡中获取该规格。有关如何解释该信息,请参阅CPLC.java