至少Broadcom的NFC控制器(例如在Nexus 5中使用)支持設置防衝突標識符(UID),ATQA和SAK字節的任意值。但是,沒有API可以改變它們,所以唯一的方法就是修改libnfc-nci庫。
UINT8_TO_STREAM (p, NFC_PMID_LA_BIT_FRAME_SDD);
UINT8_TO_STREAM (p, NCI_PARAM_LEN_LA_BIT_FRAME_SDD);
UINT8_TO_STREAM (p, 0x04);
UINT8_TO_STREAM (p, NFC_PMID_LA_PLATFORM_CONFIG);
UINT8_TO_STREAM (p, NCI_PARAM_LEN_LA_PLATFORM_CONFIG);
UINT8_TO_STREAM (p, platform);
UINT8_TO_STREAM (p, NFC_PMID_LA_SEL_INFO);
UINT8_TO_STREAM (p, NCI_PARAM_LEN_LA_SEL_INFO);
UINT8_TO_STREAM (p, sens_info);
此代碼目前設置ATQA(值平臺的組合和0×04)和SAK字節(:
用於NFC-A相關的代碼是文件nfa_dm_discover.c中(行322開始) sens_info的值)。
爲了改變NFC-A防衝突期間使用的UID,您可以添加加入參數NFC_PMID_LA_NFCID1:
UINT8_TO_STREAM (p, NFC_PMID_LA_NFCID1);
UINT8_TO_STREAM (p, 4); // length of NFCID1 in bytes
UINT8_TO_STREAM (p, 0x12);
UINT8_TO_STREAM (p, 0x34);
UINT8_TO_STREAM (p, 0x56);
UINT8_TO_STREAM (p, 0x78);
你可以找到一個更加個性化的版本libnfc-NCI here(仍然工作在 - 雖然進展)。
您可以發佈您的代碼。我知道有一個新的參數4.4,requiresDeviceUnlock。你有沒有嘗試將其改爲false/true? – Pete
沒有人會讓你仿效一張定製卡的UID,至少正式的說,它會打破大多數RFID,NFC門禁系統的安全性!!!但我非常確定,如果你降低水平,這很容易。 –
我很積極地在google play store上看到一個完整的卡片模擬器(與卡片UID),並且我希望成爲它的開發者! –