2014-12-01 87 views
4

我在NFC新的東西,所以我測試了幾個電話,並調用getTagId()在HCE模式的方法,這就是結果:獲取靜態NFC標籤的ID與HCE模式

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,爲什麼?

任何可以解釋/支持答案的文檔?

+0

你正在使用什麼'getTagId()'方法?你能描述一下你的測試設置嗎? – 2014-12-05 12:35:59

+0

嗨,羅蘭,我在閱讀器端使用onTagDiscovered(標記標記)中的getTagId – SuSu 2014-12-05 23:46:42

回答

5

爲什麼有些手機具有靜態UID,有些則沒有?這個芯片組是相關的嗎?

這取決於芯片組和NFC堆棧的實現。據我所知,各種Android NFC設備使用三種不同的場景:

  • 設備具有一個安全元素並使用該安全元素的靜態UID。
  • 設備在打開時會生成一個新的隨機UID。
  • 設備通過外部閱讀器設備在每次激活時生成一個新的隨機UID。即每當外部HF場被應用到Android設備的NFC天線時。
  • 該設備沒有安全元件,但仍使用靜態UID(通常不是獨特),例如, 0x01020304。 [感謝埃裏卡姆指出這一點。]

是否有可能得到一個固定的UID?

通常情況下,你不能影響這一點。特別是在不修改Android設備固件(更改NFC堆棧)的情況下,絕對不可能。有關通過修改libnfc-nci庫設置Broadcom芯片組上的UID值的方法,請參閱this answer

我需要它來驗證設備。

不要這樣做!有關詳細信息,請參見this answer

+1

在此處添加一個更多場景:設備沒有安全元素並使用靜態UID,即01020304.主要由Sony使用。 – ErikM 2017-10-16 07:17:32

+0

那麼,它不在我的手中,給定的實體(辦公室,學院等)使用什麼設計進行身份驗證。如果他們僅使用基於UID的系統,則所有答案都是「不要這樣做」,根本沒有幫助。我只想知道如何模仿,而不是如何設計一個認證系統。 – TJJ 2018-01-29 16:51:43