2015-07-04 5 views
9

आईएसओ 14443-4 का समर्थन करने वाले विभिन्न स्मार्ट कार्ड हैं। उदाहरण के लिए, माइफेयर प्लस अपने मूल कमांड सेट के साथ। या विभिन्न कमांड सेट वाले अन्य कार्ड (यानी 7816-4 एपीडीयू)।मैं विभिन्न आईएसओ 14443-4 कार्ड कैसे अलग कर सकता हूं?

मैं कार्ड रीडर के लिए कुछ सॉफ़्टवेयर विकसित करता हूं और मुझे यह पहचानने की आवश्यकता है कि कार्ड किस आदेश का समर्थन करता है (उदाहरण के लिए, यदि यह आईएसओ 7816-4 संरचना में आदेशों का समर्थन करता है या नहीं)।

उनके बीच अंतर करने के लिए अनुशंसित तरीका क्या है? क्या मुझे बस मिफ़ारे प्लस कमांड सेट से कुछ कमांड आज़माएं और जांचें कि क्या मुझे सही जवाब मिलते हैं? या क्या ऐसा करने का कोई शानदार तरीका है?

उत्तर

8

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

+1

हां, मुझे पता है, लेकिन एटीएस को MIFARE प्लस कार्ड में बदला जा सकता है, इसलिए यह 100% विश्वसनीय नहीं है। और मुझे संदेह है कि अन्य कार्ड मौजूद हैं (मिफायर परिवार नहीं) जिनके पास एक ही साक है। एनएक्सपी एसएके के केवल 6 बिट का मूल्यांकन करने की सिफारिश करता है यह देखने के लिए कि क्या कार्ड आईएसओ 14443-4 का समर्थन करता है और अन्य बिट्स को अनदेखा करता है। –

+1

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

+0

मुझे लगता है कि यह निजीकृत लोगों को संभालने के लिए पर्याप्त होगा, साथ ही निजीकरण के लिए नए रिक्त कार्ड। –

2

कभी भी एटीक्यू का उपयोग न करें! केवल 14443-4 कार्ड (उदाहरण के लिए। MIFARE क्लासिक) के लिए SAK का उपयोग करें! एटीएस भी खराब अभ्यास है क्योंकि विभिन्न कार्ड विक्रेता इसे अलग-अलग सेट कर सकते हैं।

अब कैसे यह करने के लिए:

केवल जिस तरह से कार्ड के बारे में सोचने के लिए कैसे और पागल नहीं मिलता है यह कल्पना है कि यह पूर्ण संचार ढेर (OSI मॉडल देखें) है।

ध्यान रखें कि आपका लक्ष्य दो अनुप्रयोगों को जोड़ना है, एक कार्ड में और एक आपके कंप्यूटर में। 14443-4 संदेश भेजने के लिए तंत्र प्रदान करता है और इसकी सामग्री परवाह नहीं करता है।

इसके शीर्ष पर विभिन्न कार्डों के इंटरफेस लागू किए गए हैं और यदि दोनों तरफ: कार्ड - कार्डड्राइवर संगत हैं तो वे संवाद करेंगे। यदि नहीं, तो उस स्तर पर त्रुटियां होंगी। तो आप जानते हैं कि आपको विभिन्न कार्ड ड्राइवर का उपयोग करने की आवश्यकता होगी।

पूरा संचार ढेर इस तरह दिखेगा:

Your Application 
    | CardProtocol/7816-4 
    | | 14443-4 
    | | | 14443 
    | | | | radio waves 
    | | | 14443 (in card) 
    | | 14443-4 (in card) 
    | CardProtocol/7816-4 (in card) 
    Application/Appdata (in card) 
बेशक

हर परत के बीच कुछ इंटरफेस हो गया है।

यदि आपके पास दो अनुप्रयोग हैं जो संवाद करना चाहते हैं तो एक को आजमाएं और फिर दूसरा प्रयास करें।

आवेदन स्तर पर त्रुटि => वहाँ कार्ड पर कोई संगत अनुप्रयोग है

CardProtocol स्तर पर त्रुटि => वहाँ संगत कार्ड नहीं है

प्वाइंट अपने संचार सभी स्तरों पर succed के लिए इतना नहीं है संगत प्रोटोकॉल द्वारा कार्ड के साथ संवाद करने की कोशिश करने की चिंता न करें - यदि आप (कुछ चमत्कार से) कार्डप्रोटोकॉल स्तर पर त्रुटि नहीं प्राप्त करेंगे तो आपको निश्चित रूप से आपके आवेदन स्तर पर एक प्राप्त होगा और परिणाम वही होगा। शुभकामनाएँ!

पीएस कुछ और जटिल परिस्थितियां हैं जैसे "दो प्रोटोकॉल/कार्ड के प्रकारों पर एक ऐप" लेकिन उन्हें आसानी से संभाला जा सकता है।

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

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