2013-11-04 9 views
9

एंड्रॉइड 4.4 के साथ होस्ट-आधारित कार्ड इम्यूलेशन होस्ट-आधारित कार्ड इम्यूलेशन (एचसीई) पेश किया गया। जैसा कि आप जानते हैं, सभी एनएफसी कार्ड एक निश्चित कार्ड आईडी (NfcAdapter.EXTRA_ID) के साथ आते हैं।फिक्स्ड कार्ड आईडी

मेरा कार्यालय दरवाजा उपयोग आमतौर पर प्राधिकरण के लिए एनएफसी कार्ड आईडी का पता लगाता है। किटकैट पर अपने फोन को चमकाने के बाद, मैंने अपने फोन को एक्सेस रीडर के साथ स्कैन करने का प्रयास किया। लेकिन जब भी स्क्रीन बंद हो जाती है, तो मुझे एक अलग कार्ड आईडी मिलती है।

मैंने फोन स्क्रीन को रखने और दरवाजा पहुंच प्रणाली पर नकली कार्ड आईडी दर्ज करने का प्रयास किया। यह दरवाजा खोलने के लिए पहुंच प्रदान करने में कामयाब रहे। लेकिन स्क्रीन बंद होने के बाद यह फिर से काम नहीं करेगा।

जब से किटकैट ने एचसीई मोड की शुरुआत की, तब से मैं अपने फोन का उपयोग करके अपने दरवाजे का उपयोग कार्ड अनुकरण करने की कोशिश कर रहा हूं।

फ़ोन नकली कार्ड आईडी बनाने के लिए कोई विचार तय किया गया है?

+1

क्या आप अपना कोड कृपया पोस्ट कर सकते हैं। मुझे पता है कि एक नया पैरामीटर 4.4 है, आवश्यकता है Defice अनलॉक। क्या आपने इसे गलत/सही में बदलने की कोशिश की है? – Pete

+0

कोई भी आपको कस्टम कार्ड यूआईडी का अनुकरण नहीं करेगा, कम से कम आधिकारिक तौर पर, यह किसी भी तरह से आरएफआईडी, एनएफसी एक्सेस कंट्रोल सिस्टम की सुरक्षा को तोड़ देगा !!! लेकिन मुझे बहुत यकीन है कि यदि आप स्तर नीचे गए तो यह बहुत आसान है। –

+0

मैं Google play store पर एक पूर्ण कार्ड एमुलेटर (कार्ड यूआईडी के साथ) देखने के लिए बहुत उत्साहित हूं, और मुझे उम्मीद है कि इसका डेवलपर बन जाएगा !! –

उत्तर

13

यह संभव नहीं है (कम से कम सरकारी एपीआई के साथ):

विनिमय HCE डिवाइस अपने यूआईडी पेश करेंगे के पहले भाग में; एचसीई उपकरणों को यादृच्छिक यूआईडी माना जाना चाहिए। इसका मतलब है कि प्रत्येक टैप पर, पाठक को प्रस्तुत किया गया यूआईडी एक यादृच्छिक रूप से जेनरेट किया गया यूआईडी होगा। इस वजह से, एनएफसी पाठकों को एचसीई उपकरणों के यूआईडी पर प्रमाणीकरण या पहचान के रूप में निर्भर नहीं होना चाहिए।

(http://developer.android.com/guide/topics/connectivity/nfc/hce.html#ProtocolParams)

11

According to HCE के लिए जिम्मेदार गूगल के डेवलपर्स में से एक:

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

7

कम से कम ब्रॉडकॉम के NFC नियंत्रक (नेक्सस 5 में जैसे प्रयोग किया जाता) anticollision पहचानकर्ता (यूआईडी), ATQA और SAK बाइट के लिए मनमाने ढंग से मूल्य निर्धारित करने का समर्थन करता है। हालांकि, उन्हें बदलने के लिए कोई एपीआई नहीं है, इसलिए 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 (मूल्य मंच के संयोजन और 0x04) सेट करता है और SAK बाइट (:

एनएफसी-ए के लिए प्रासंगिक कोड फ़ाइल nfa_dm_discover.c में है (लाइन 322 पर शुरू) sens_info का मान)।

आदेश एनएफसी-ए anticollision के दौरान इस्तेमाल किया यूआईडी बदलने के लिए, आप इसके अलावा पैरामीटर 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 (अभी भी काम-in- हालांकि प्रगति)।

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