android एंड्रॉइड 4.4 के साथ अनुकरण Mifare कार्ड




nfc rfid (3)

मैंने एक साल पहले इस विषय पर शोध करने में सप्ताह बिताए हैं और वर्तमान निष्कर्ष पर आधारित मेरा निष्कर्ष यह था: MIFARE क्लासिक का अनुकरण संभव है, लेकिन केवल एम्बेडेड सिक्योर एलिमेंट के माध्यम से, यह तत्व एनएक्सपी के एनएफसी चिप के भीतर एम्बेडेड है (पीएन 65 चिप के लिए निर्मित उदाहरण सैमसंग I9300)।

मैं android_external_libnfc-nxp लाइब्रेरी में छिपे हुए कार्यों का उपयोग करके एक MIFARE क्लासिक कार्ड को पूरी तरह से अनुकरण करने में सक्षम हूं। हालांकि मैं केवल कार्ड पढ़ सकता था और इसके लिए उपयोगी होने के लिए आपको सुरक्षित तत्व तक पहुंच की आवश्यकता होती है, जहां अधिकांश मामलों में एनएक्सपी द्वारा एक एप्लेट मौजूद होता है, यह एप्लेट सर्वर नकली कार्ड के प्रबंधन के लिए फ्रंट एंड के रूप में होता है।

इस खोज को जारी रखने का एक अच्छा तरीका Google के वॉलेट एप्लिकेशन के विपरीत इंजीनियरिंग होगा।

मैंने माइफेयर और अन्य कार्ड इम्यूलेशन का शोध किया है, मुझे प्रोग्रामिंग में बहुत अच्छा ज्ञान है (एंड्रॉइड नहीं, लेकिन सी / सी ++)। मेरे पास प्रॉक्सीमार्क है और मैंने प्रॉक्सीमार्क के लिए एकाधिक इम्यूलेशन कोड बनाए हैं, इसलिए मुझे पता है कि कार्ड कैसे संवाद करते हैं।

मैं वर्तमान में समझ में नहीं आता, एंड्रॉइड पूर्ण कार्ड अनुकरण सक्षम करता है। मैंने इसे लगभग 3 दिनों के लिए शोध किया है, और निष्कर्ष यह है कि कोई भी निरंतर पैटर्न नहीं है। कुछ लोग कहते हैं कि यह संभव है, कुछ कहते हैं कि यह नहीं है। मैंने एंड्रॉइड एपीआई के माध्यम से देखा और होस्ट-आधारित कार्ड इम्यूलेशन चाल करने में सक्षम प्रतीत होता है, लेकिन जैसा कि मुझे लगता है कि यह 4.4 किटकैट में नई बात है, क्या किसी के पास इसका कोई अनुभव है?

चीजों को सरल बनाने के लिए, वर्तमान में मैं MIFARE Ultralight के लिए सबसे सरल सरल अनुकरण की जांच कर रहा हूं। यह कार्ड एक सुरक्षा दुःस्वप्न है, इसमें कोई एन्क्रिप्शन नहीं है और केवल 10 कार्य करता है। इसलिए मुझे इस कार्ड के साथ शोध शुरू करने में दिलचस्पी है, क्योंकि यह पुन: पेश करने का सबसे आसान तरीका है।

तो क्या किसी को एंड्रॉइड पर कार्ड इम्यूलेशन में कोई ज्ञान है। शायद स्टॉक ओएस का उपयोग नहीं कर रहा है। किसी भी चीज जो जानने योग्य है उसे बहुत सराहना की जाएगी।

धन्यवाद।


MIFARE Ultralight चिप MF0ICU1 (16 पृष्ठ x 4 बाइट्स प्रत्येक) वास्तव में एक दुःस्वप्न है, लेकिन पीएन 53x सहित किसी भी एनएक्सपी इंटरफेस पर नकल नहीं किया जा सकता है, क्योंकि उन्होंने पहले UID बाइट ( UID UID0 ) को 0x08 तक UID0 , तो इसका मतलब है कि टैग में यादृच्छिक है UID (एनएक्सपी मानकों के अनुसार)। MIFARE Ultralight अनुकरण करने के लिए आपको UID0 = 0x04 की आवश्यकता है।

एक स्टैंडअलोन MIFARE Ultralight एमुलेटर मौजूद है जो UID0 लिए किसी भी मूल्य की अनुमति देता है, इसमें रीसेट करने योग्य ओटीपी, लॉक और ब्लॉक-लॉकिंग बिट्स हैं। अधिक जानकारी के लिए मैनुअल देखें।


एंड्रॉइड 4.4 में होस्ट-आधारित कार्ड इम्यूलेशन (एचसीई) के साथ आप केवल आईएसओ / आईईसी 14443-4 प्रोटोकॉल का अनुकरण कर सकते हैं। अधिक विशेष रूप से आप केवल आईएसओ / आईईसी 7816-4 के अनुसार आवेदन संरचनाओं का अनुकरण कर सकते हैं (इस प्रकार कार्ड एमुलेशन अनुप्रयोगों को एआईडी के रूप में चुना जाना चाहिए)। इसके अलावा, एपीआई आपको टाइप ए या टाइप बी प्रोटोकॉल का उपयोग करके कार्ड अनुकरण किया जाना चाहिए या नहीं, यह निर्दिष्ट करने के लिए कोई साधन नहीं देता है।

तो विभिन्न MIFARE प्रोटोकॉल के अनुकरण के संबंध में:

  • MIFARE Ultralight (और derivates) प्रोटोकॉल आईएसओ / आईईसी 14443-3 के शीर्ष पर संचालित है। Android HCE का उपयोग करके ऐसे निम्न परत प्रोटोकॉल का उपयोग करके कार्ड अनुकरण करना संभव नहीं है।
  • MIFARE क्लासिक प्रोटोकॉल आंशिक रूप से आईएसओ / आईईसी 14443-3 (कुछ अलग फ्रेमिंग के साथ) के शीर्ष पर संचालित होता है। इस प्रकार, एंड्रॉइड एचसीई का उपयोग कर MIFARE क्लासिक का अनुकरण करना भी संभव नहीं है।
  • MIFARE DESFire प्रोटोकॉल आईएसओ / आईईसी 14443-4 के शीर्ष पर संचालित होते हैं। डीईएसफायर प्रोटोकॉल के तीन प्रकार हैं:

    1. मूल प्रोटोकॉल : चूंकि यह प्रोटोकॉल आईएसओ / आईईसी 7816-4 के अनुसार एपीडीयू का उपयोग नहीं करता है, इसलिए एंड्रॉइड एचसीई का उपयोग करके इसे अनुकरण करना संभव नहीं है।
    2. लपेटा गया देशी प्रोटोकॉल : यह प्रोटोकॉल आईएसओ / आईईसी 7816-4 के अनुसार एपीडीयू का उपयोग करता है, हालांकि, आमतौर पर पाठक देशी कोड कमांड मोड में किसी कार्ड के साथ संवाद करने के लिए डीईएसएफयर एआईडी का उपयोग करके एक SELECT कमांड जारी नहीं करेंगे। (नोट: नए पाठक कार्यान्वयन एक SELECT कमांड जारी करने की अधिक संभावना है जो एंड्रॉइड एचसीई के साथ संगत है क्योंकि यह डीईएसफायर प्रोटोकॉल इम्यूलेशन के साथ कुछ एनएक्सपी के नए स्मार्टकार्ड उत्पादों के लिए भी आवश्यक है।)
    3. आईएसओ प्रोटोकॉल : यह प्रोटोकॉल आईएसओ / आईईसी 7816-4 पर आधारित है और एआईडी द्वारा एप्लिकेशन चयन का उपयोग करता है। इस प्रकार, एंड्रॉइड एचसीई का उपयोग करके इस प्रोटोकॉल का अनुकरण करना संभव हो सकता है।

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

संस्करण 9.1 से संस्करण 10.2 तक CyanogenMod में उपलब्ध एचसीई सुविधा पर एक नोट: यह किसी भी आईएसओ / आईईसी 14443-4 आधारित प्रोटोकॉल को आईएसओ / आईईसी 7816-4 के अनुसार आवेदन संरचना की आवश्यकता के बिना अनुकरण करेगा। आप यह भी चुन सकते हैं कि आप टाइप ए या टाइप बी प्रोटोकॉल अनुकरण करना चाहते हैं या नहीं। इसलिए यह संभव होना चाहिए (हालांकि मैंने परीक्षण नहीं किया है) तीन डीईएसफायर प्रोटोकॉल में से किसी एक को अनुकरण करने के लिए। हालांकि, साइनोजनमोड की एचसीई सुविधा के साथ भी MIFARE Ultralight या क्लासिक प्रोटोकॉल का अनुकरण करना संभव नहीं है। इसके अलावा, यूआईडी, एटीक्यूए, एसएके, या एटीएस जैसे निम्न स्तर के प्रोटोकॉल पैरामीटर को प्रभावित करना भी संभव नहीं है।





hce