【问题标题】:Get Static NFC Tag Id with HCE mode使用 HCE 模式获取静态 NFC 标签 ID
【发布时间】:2015-01-30 02:42:00
【问题描述】:

我是 NFC 方面的新手,所以我测试了几部手机在 HCE 模式下调用 getTagId() 方法,结果如下:

device       | UID
LG G2        | random
LG G3        | static
S4           | random
HTC One Mini | static
Xiaomi mi3   | static

我的问题:

  1. 为什么有些手机有静态 UID 而有些没有?这个芯片组有关系吗?
  2. 是否可以获得固定的 UID?我需要它来验证设备。
  3. 另一方面,我在 Xperia M 上使用 Kitkat CyanogenMod 11,但我没有设法将它用于 HCE,为什么?

任何可以解释/支持答案的文件?

【问题讨论】:

  • 您使用的是什么getTagId() 方法?您能描述一下您的测试设置吗?
  • 嗨 Roland,我在阅读器端的 onTagDiscovered(Tag tag) 中使用 getTagId

标签: android nfc uniqueidentifier hce serial-number


【解决方案1】:

为什么有些手机有静态 UID 而有些没有?这个芯片组有关系吗?

这取决于芯片组和 NFC 堆栈的实现。据我所知,各种 Android NFC 设备使用三种不同的场景:

  • 设备具有安全元件并使用该安全元件的静态 UID。
  • 设备在开机时会生成一个新的随机 UID。
  • 每次外部读取器设备激活时,设备都会生成一个新的随机 UID。 IE。每当向 Android 设备的 NFC 天线施加外部 HF 场时。
  • 设备没有安全元素,但仍使用静态 UID(通常不是唯一),例如0x01020304。 [感谢 ErikM 指出这一点。]

是否可以获得固定的 UID?

通常情况下,您无法影响这一点。特别是在不修改 Android 设备固件(更改 NFC 堆栈)的情况下,这绝对是不可能的。通过修改 libnfc-nci 库在 Broadcom 芯片组上设置 UID 值的方法见this answer

我需要它来验证设备。

不要这样做!有关更多信息,请参阅this answer

【讨论】:

  • 这里再添加一个场景:设备没有安全元件,使用静态UID,即01020304。主要由索尼使用。
  • 嗯,给定实体(办公室、大学等)用于身份验证的设计不在我手中。如果他们使用仅基于 UID 的系统,那么所有说“不要这样做”的答案都没有任何帮助。我只想知道如何模拟,而不是如何设计认证系统。
猜你喜欢
  • 2020-03-30
  • 2015-09-26
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 2015-12-25
相关资源
最近更新 更多