2014-11-10 6 views
5

के साथ एंड्रॉइड एनएफसी कार्ड इम्यूलेशन मैंने एओएसपी से एनएफसी भागों को डाउनलोड किया है और मैं कार्ड इम्यूलेशन द्वारा उपयोग किए गए यादृच्छिक यूआईडी उत्पन्न करने के लिए एंड्रॉइड द्वारा उपयोग की जाने वाली विधि की तलाश में हूं। मेरा लक्ष्य लक्ष्य के साथ संचार होने पर हर बार एक अलग होने के बजाय यूआईडी को ठीक करना है। मैं "libnfc-NCI" के अंदर पाए मॉड्यूल फ़ाइल "nfa_ce_act.c" इस युक्तनिश्चित यूआईडी

void nfa_ce_t3t_generate_rand_nfcid (UINT8 nfcid2[NCI_RF_F_UID_LEN]) 
{ 
UINT32 rand_seed = GKI_get_tick_count(); 

/* For Type-3 tag, nfcid2 starts witn 02:fe */ 
nfcid2[0] = 0x02; 
nfcid2[1] = 0xFE; 

/* The remaining 6 bytes are random */ 
nfcid2[2] = (UINT8) (rand_seed & 0xFF); 
nfcid2[3] = (UINT8) (rand_seed>>8 & 0xFF); 
rand_seed>>=(rand_seed&3); 
nfcid2[4] = (UINT8) (rand_seed & 0xFF); 
nfcid2[5] = (UINT8) (rand_seed>>8 & 0xFF); 
rand_seed>>=(rand_seed&3); 
nfcid2[6] = (UINT8) (rand_seed & 0xFF); 
nfcid2[7] = (UINT8) (rand_seed>>8 & 0xFF); 
} 

इस विधि FeliCa टैग के लिए एक यूआईडी उत्पन्न करते हैं। मैं ISO14443 कार्ड (MIFARE) के लिए एक नहीं ढूंढ पा रहा हूं जो डिफ़ॉल्ट रूप से 0x08 से शुरू होने वाला यूआईडी उत्पन्न करता है। मार्टिजन कोएनन के अनुसार, जैसा कि उनके जी + पोस्ट में बताया गया है, यह कुछ संभव है।

क्षमा करें, मुझे एहसास है कि कई लोग यह चाहते थे, लेकिन आधिकारिक संस्करण में यह संभव नहीं है। (आप निश्चित रूप से कुछ एओएसपी हैकिंग के साथ ऐसा कर सकते हैं)। कारण यह है कि एचसीई पृष्ठभूमि संचालन के आसपास बनाया गया है। यदि हम ऐप्स को यूआईडी सेट करने की अनुमति देते हैं, तो प्रत्येक ऐप संभवतः अपना यूआईडी सेट करना चाहता है, और संघर्ष को हल करने का कोई तरीका नहीं है। हमें आशा है कि एचसीई के साथ, एनएफसी आधारभूत संरचना यूआईडी पर भरोसा करने के बजाय प्रमाणीकरण करने के लिए प्रोटोकॉल स्टैक के उच्च स्तर तक पहुंच जाएगी (जिसे वैसे भी आसानी से क्लोन किया जाता है)। https://plus.google.com/+MartijnCoenen/posts/iX6LLoQmZLZ

क्या कोई इसे प्राप्त करने के बारे में जानता है?

धन्यवाद

+0

अभी तक कोई समाधान मिला है? –

उत्तर

2

एक जानना महत्वपूर्ण बात यह है कि यूआईडी एनएफसी प्रोटोकॉल का एक बहुत ही निम्न स्तर पर स्थानांतरित कर रहा है। इसका मतलब है कि यह एनएफसी फर्मवेयर द्वारा स्वतंत्र रूप से किया जाता है और एंड्रॉइड ऑपरेटिंग सिस्टम के भीतर नहीं। हमें हमारे NFCGate प्रोजेक्ट में एक ही समस्या थी और नेक्सस 4/5 में ब्रॉडकॉम बीसीएम 20793 चिप्स के लिए एक समाधान मिला और अन्य ने यूआईडी को एनएफसी_SetConfig के साथ सीधे चिप फर्मवेयर में लिखा।

आप एक वर्किंग वर्जन in our repository on github देख सकते हैं। ताकि आप के लिए एक अच्छी जगह खोजने की जरूरत है,

uint8_t cfg[] = { 
    CFG_TYPE_UID, // config type 
    3,   // uid length 
    0x0A,   // uid byte 1 
    0x0B,   // uid byte 2 
    0x0C   // uid byte 3 
}; 
NFC_SetConfig(sizeof(cfg), cfg); 

हमारे परीक्षण से पता चला कि एंड्रॉयड कभी कभी यादृच्छिक (लंबाई = 0 अगर मैं सही ढंग से याद करते हैं) के लिए वापस यूआईडी सेट: यहाँ सिद्धांत को दिखाने के लिए एक गैर परीक्षण किया संस्करण है इसे सेट करते समय इसे सेट करें या ऐसा कुछ करें जैसा हमने किया था और एंड्रॉइड से एनएफसी_SetConfig कॉल को अपने स्वयं के यूआईडी को फिर से सेट करने के लिए अवरुद्ध करता है।

संबंधित मुद्दे