تجربة مع طابعات البطاقات ، الجزء 1

ستكون هذه المقالة مفيدة لأولئك الذين يبدأون العمل مع طابعات البطاقات ( Evolis Primacy و Smart-51 ) وبطاقات NFC المشفرة مثل Mifare Classic و Mifare DESFire EV2 . في الجزء الأول ، سنصف الانطباع العام عن العمل مع طابعات البطاقات ، بالإضافة إلى المشكلات التي واجهناها. في الجزء الثاني ، من المخطط عرض أجزاء عملية أكثر: الشفرة ، نصائح التشغيل.


1. كيف تظهر المهمة


نحن نعمل على تطوير نظام التذاكر الإلكترونية ، والذي يتضمن العمل مع بطاقات NFC. كل بطاقة NFC لديها رقم سهل الاستخدام ، ومعرف فردي. يجب طباعة الرقم على البطاقة ، وكتابة المعرّف في رقاقة NFC. كانت إحدى المهام إنشاء إنتاج مستقر لبطاقات النقل.


في المرحلة الأولى ، تم حل المشكلة بأبسط الطرق - تتم طباعة المطبوعات التي تحمل أرقام بواسطة مزود بطاقة NFC ، ويتم تسجيل المعرفات بواسطتنا باستخدام قارئات سطح المكتب والبرامج الخاصة والشخص. بعد استلام البطاقات من المورد ، يجب تسجيل البطاقة في النظام وربط البطاقة الشخصية والرقم مع بعضهما البعض. كقارئ سطح مكتب ، استخدمنا قارئ Z-2 [1].


بدت العملية بشيء من هذا القبيل:


  • المشغل يلتقط بطاقة. رقم البطاقة مطبوع بالفعل على البطاقة ، لكن تسجيل البطاقة في النظام وتسجيل المعرف في رقاقة NFC مطلوب
  • يضع المشغل البطاقة على قارئ Z-2 ويسجل الرقم في نظام التذاكر الإلكتروني عن طريق إدخال رقم البطاقة يدويًا. للتجميع والتسجيل ، يتم إجراء اتصال HTTPS API
  • يأخذ المشغل البطاقة التالية ويفعلها مرة أخرى.

حل بسيط وسريع مع عيب واحد صغير . يؤدي تأثير العامل البشري إلى إنشاء بطاقات فانتوم لا يتوافق الرقم المطبوع على البطاقة مع معرف الارتباط - الرقم في قاعدة بيانات النظام.


لذا وُلد البيان التالي للمشكلة: من المطلوب طباعة الرقم ، وكتابة المعرف وتسجيل بطاقات NFC في النظام تلقائيًا وبأقل قدر من المشاركة البشرية.


في هذه المقالة سنصف جميع المعدات التي عملنا بها ، وجميع المزالق. في النهاية ، سنحاول تحديد المعدات التي تبدو أفضل لنا.


1.1. بطاقات NFC


استعرضنا بطاقات NFC MIFARE Classic 1K و MIFARE DESFire EV2. MIFARE Classic هو الأكثر شيوعًا والأكثر عرضة للنسخ. ومع ذلك ، فإنها لا تزال تحظى بشعبية في أماكن مثل الجامعات ووسائل النقل العام. عند التعامل مع التدفقات النقدية ، هناك حاجة إلى حل أكثر موثوقية. لذلك ، أصبحت بطاقات MIFARE DESFire EV2 بديلاً. هذا هو واحد من آخر أنواع البطاقات التي تستخدم DES ، TDES (2KTDES ، 3KTDES) ، خوارزميات تشفير AES [2 ، 3]. باختصار عن كل خريطة:


MIFARE كلاسيك


بطاقة الذاكرة هي قطاع وكتل. الوحدة الأولى من الذاكرة هي القطاع. يوجد 16 قطاعًا على الخريطة ، لكل منها 4 كتل بيانات. ذاكرة كل كتلة 16 بايت. لقراءة و / أو كتابة البيانات ، يجب على القارئ تسجيل الدخول إلى القطاع. تم تصميم كتلة خاصة واحدة في كل قطاع ، مقطع المقطورة ، لتخزين المفاتيح. بادئ ذي بدء ، للعمل مع القطاع ، تحتاج إلى تسجيل الدخول إلى كتلة المقطورة. يقوم مقطع المقطورة أيضًا بتخزين 16 بايت: 6 بايت لكل نوع مفتاح A ، 4 بايت لكل حقوق وصول ، 6 بايت لكل نوع مفتاح B.


يوضح الشكل 1 [4] القطاعات والكتل والمفاتيح بوضوح.




الشكل 1 - جهاز الذاكرة في Mifare Classic


MIFARE DESFire


يشبه جهاز البطاقة نظام الملفات. تتكون البطاقة من التطبيقات والملفات. يوجد على الخريطة تطبيق رئيسي (تطبيق) بالكود - 000000 (0x00 ، 0x00 ، 0x00). داخل التطبيق الرئيسي ، يمكنك إنشاء تطبيق جديد وإنشاء ملفات بيانات داخله.
يتم عرض خصائص بطاقات DESFire في الشكل 2 [5]. يتم تعيين كل تطبيق مفاتيح الوصول الخاصة به إلى ملفات التطبيق.



الشكل 2 - خصائص بطاقات Mifare DESFire


1.2. الطابعات كحل


لإنجاز هذه المهمة ، يتم استخدام طابعات البطاقات الخاصة. في الوقت الحالي ، هناك العديد من الشركات المختلفة التي تقدم هذه الطابعات. على سبيل المثال: Evolis و Smart و Zebra و Datacard ، إلخ. استخدمنا طابعات Evolis Primacy و Smart-51 . تشترك هذه الطابعات كثيرًا في قلب المهمة: فهي تستخدم خراطيش الشريط للطباعة ولديها مبدأ تنظيف مماثل. هناك أيضا اختلافات - تشفير NFC مختلفة. يمكن استكمال الطابعتين أو استبدالهما حسب احتياجات العميل.


يعتمد مبرمجو بطاقات NFC على المعايير ISO / IEC 14443A و ISO / IEC 7816-4 لـ DESFire و ISO / IEC 14443 Type A for Classic. ومع ذلك ، بناءً على الشركة المصنعة ، يمكن للمبرمجين إما قبول الأوامر الأصلية وفقًا للمعايير ، أو التفاف الأوامر المحلية الخاصة بمبرمج معين. نحن نواجه واحد والآخر.


إيفوليس الأسبقيةسمارت-51
طباعةيتم استخدام الشريط للطباعة (اللون أو أحادية اللون). يتم توفير شريط كاسيت كامل.يتم استخدام الشريط للطباعة (اللون أو أحادية اللون). يتم توفير الشريط فقط ، خرطوشة واحدة ويأتي مع الطابعة نفسها. يتم تضمين بكرة التنظيف مع الشريط.
التشفيرتشفير اليكتيس. سهل الاستخدام ل يدعم التفاعل مع مكتبات Windows الافتراضية للاتصال ببطاقات NFC ، winscard.تشفير DUALi. يوفر الدعم الفني SDK خاص للعمل مع المشفر.
تنظيفللحفاظ على الطابعة في حالة صالحة للعمل ، فإنها تتطلب التنظيف المستمر. هناك نوعان من التنظيف: دورية (بعد كل 1000 بطاقة) وتمديدها (بعد 5000 بطاقة). يعد الالتزام بجدول التنظيف شرطًا أساسيًا في اتفاقية الضمان.مطلوب التنظيف بعد استخدام الشريط المطبوع. اعتمادًا على نوع الشريط وحجم الصورة للطباعة ، سوف تكون هناك حاجة إلى التنظيف بعد 2-4 آلاف بطاقة.
إسكانتتيح العلبة البلاستيكية للطابعة أن تكون خفيفة الوزن تمامًا. يمكن الوصول بسهولة إلى المناطق الداخلية ، لأن جدران الطابعة تفتح على كلا الجانبين.العلبة المعدنية تجعل الطابعة موثوقة للتشغيل. بعض الأحشاء لا يمكن رؤيتها إلا عن طريق فتح الغطاء العلوي.
ناعميأتي مع برنامج خاص "Evolis Print Center" و CardPresso. هناك حاجة الأولى لإعدادات الطابعة ، ومجهزة بالعديد من المساعدين. يسمح لك البرنامج الثاني باختبار قدرات الطابعة بسرعة للطباعة والترميز.برنامج منفصل للتحكم في الطابعة غير مطلوب. ما يكفي من خصائص الطابعة في قائمة أجهزة ويندوز. يأتي مع برنامج SmartID للطباعة والترميز.

الجدول 1 - مقارنة بين Evolis الأسبقية و Smart-51

2. التجارب


بشكل عام ، يمكن تقسيم العمل مع الطابعات إلى عدة أجزاء: التواصل مع الدعم الفني ، ودراسة تفاعل البطاقات وأجهزة التشفير والطباعة.


2.1. الانطباع بالدعم الفني


تضمن العمل مع الطابعات التواصل المستمر مع الدعم الفني ، لأننا كنا بحاجة إلى كتابة برنامجنا الخاص. في كلتا الحالتين ، تحدثنا أكثر مع موزعي الشركات في بلدنا والبلدان المجاورة.


لقد كان موزعو Evolis دائمًا على اتصال دائم. ومع ذلك ، على الفور تقريبا أظهرت تفاصيل القضايا الحاجة إلى التواصل مع ممثلي Evolis. لسوء الحظ ، لم يعطونا جهات اتصالهم واضطروا إلى تبادل الرسائل من خلال موزع. ومع ذلك ، كان هذا يتعلق فقط بمشكلات الطباعة ؛ فيما يتعلق بمشكلات الترميز ، تم إرسال بريد إليكتروني إلى ممثل Elyctis. التواصل المباشر مع Elyctis يبسط إلى حد كبير عملية الترميز. من الناحية الفنية البحتة ، فهمنا بعضنا البعض على الفور ولم يكن هناك سوء فهم. في حالة الطباعة ورمز الأمثلة لـ Evolis Primacy ، توقف الاتصال في مرحلة ما. في الأساس ، كان الانطباع السلبي ناتج عن اللحظات التي لم تنجح فيها أمثلة الطباعة على الوجهين واستغرق الأمر وقتًا طويلاً لإثبات ذلك. وصلت إلى تسجيلات عمليات الطباعة على الفيديو ، وبعدها اتبعت نصائح أكثر إنتاجية من Evolis.


كان أحد أحدث أسئلة الدعم الفني لشركة Evolis هو كيفية توصيل الطابعة عبر الإيثرنت. في الوقت الحالي ، نقوم بتوصيل الطابعة عبر USB بجهاز الكمبيوتر المحمول ، وهو أمر مقبول بوجود طابعات 1-2. الإجابات لا تزال تنتظر. ومع ذلك ، تم بالفعل تلقي إجابة من Elyctis تفيد بأن برنامج التشفير الخاص بالطابعة Evolis Primacy لا يوفر اتصال شبكة.


تواصل التواصل مع الدعم الفني Smart-51 أيضًا في التواصل مع ممثلي الشركة من خلال موزع. في البداية ، سارت الأمور بسلاسة. عندما يتعلق الأمر بترميز البطاقات مثل Mifare DESFire ، بدأت المشاكل. كانت الصعوبات ناجمة عن وجود فرق محددة لن تجدها على الإنترنت. لهذا السبب ، كان عليك فقط نسخ بعض الأجزاء من رمز العمل المقدم من الشركة المصنعة كمثال. ومع ذلك ، لا يؤدي النسخ الطائش إلى الخير. ونتيجة لذلك ، أمضى أسبوعان في شرح الخطأ للشركة المصنعة ، الذي كان الرجل جالسًا بجانبه بوضوح ، وليس قريبًا جدًا من تعقيدات النظام ، ولكن لديه وثائق عامة معه. بقي راسب غير سارة ، لكنها بدأت بشكل جيد للغاية.


التواصل من خلال موزع لا يوجد لديه إيجابيات ، السلبيات الصلبة. على سبيل المثال:


  1. ردود متأخرة ، لأن الشخص المسؤول على جانب الموزع قد يكون مشغولًا بأشياء أخرى أو يذهب في إجازة.
  2. عندما يكون الموزع في بلد آخر ، تكون هذه أيام عطلات إضافية ، وليست أيام عمل. في حالة Smart-51 ، تم التواصل بمشاركة أشخاص من 3 دول.
  3. لا تتم إعادة توجيه الردود. يتم إدراج نص الاستجابة في رسالة جديدة من الموزع. لهذا السبب ، تُفقد الملفات المرفقة في بعض الأحيان ولا تصل على الفور.
  4. لا يوجد يقين واضح بأن رسالتك قد وصلت إلى الشركة المصنعة دون تغيير.

يوجد أدناه جدول يحتوي على عدد الأحرف التي تشكل اتصالًا مع الدعم الفني. في الأساس ، كانت أسئلة Evolis و Smart متشابهة. على سبيل المثال ، "لماذا لا تتم طباعة لون موحد؟ هل لديك أمثلة التعليمات البرمجية في C # أو Java؟" وأسئلة أكثر تحديدًا حول سبب عدم عمل شيء كما هو متوقع.


EVOLISElyctisسمارت-51
عدد الحروف973761

الجدول 2 - مقارنة عدد رسائل البريد الإلكتروني مع الدعم الفني

2.2. ترميز


يحدث التواصل مع القارئ من خلال أوامر APDU. APDU (وحدة بيانات بروتوكول التطبيق) هو تنسيق قياسي للاتصال بين البطاقة والقارئ. سوف تصف هذه المقالة فرق APDU الأساسية لـ MIFARE Classic و MIFARE DESFire.


اسمحجموصف
CLA1 بايتبايت الفئة
INS1 بايتبايت التعليمات
P11 بايتالمعلمة 1
P21 بايتالمعلمة 2
طول البيانات1 بايتحجم البيانات المنقولة
معطيات...البيانات المنقولة
طول البيانات المتوقعة1 بايتحجم البيانات المتوقعة في الاستجابة

الجدول 3 - تنسيق أوامر APDU
اسمحجموصف
SW11 بايتالنجاح المشترك أو رمز الخطأ
SW21 بايترمز الخطأ مفصل
معطيات...إرجاع البيانات

الجدول 4 - تنسيق استجابة APDU

يمكن العثور على وصف لجميع رموز الاستجابة الممكنة هنا [6]. يمكن العثور على جهاز لتوصيل البطاقات مع القارئ في [7].


خوارزمية ترميز موجزة هي كما يلي:


  1. الحصول على UID للبطاقة. هذا رقم فريد ، يتم وميضه من قبل المورد ولا يتغير.
  2. قراءة البيانات من كل قطاع:
    2.1 تسجيل الدخول إلى القطاع باستخدام المفتاح الافتراضي (0x00 أو 0xFF)
    2.2 قراءة البيانات من ثلاث كتل البيانات
  3. إذا كانت بيانات القراءة فارغة ، فانتقل إلى سجل البيانات
    3.1 تسجيل الدخول إلى القطاع باستخدام المفتاح الافتراضي (0x00 أو 0xFF)
    3.2 كتابة البيانات إلى ثلاث كتل بيانات القطاع
    3.3 إنشاء مفتاح جديد يستند إلى UID للبطاقة
    3.4 استبدل مفتاح التخويل في مقطع المقطورة بمفتاح جديد.

2.2.1. Elyctis


تستخدم الطابعة Evolis قارئ ELYCTIS CL . باستخدام مكتبة WinSCard (C ++ و C #) و jnasmartcardio (java) ، يمكنك التفاعل بسهولة مع القارئ. من أجل إنشاء برنامج بسرعة مع واجهة بسيطة إلى حد ما ، فقد تقرر كتابة التعليمات البرمجية في C # . غالبًا ما يكتب فريقنا رمزًا في Java ، مما جعل الانتقال إلى C # أقل إيلامًا. أيضا لصالح C # كان حقيقة أن ويندوز هو أكثر ملاءمة للعمل مع الطابعات.


يعرض الجدول أدناه أمثلة لأوامر APDU الأصلية التي يقبلها قارئ Elyctis.


وصفمعطياتAPDU
الحصول على بطاقة UID-0xFF 0xCA 0x00 0x00 0x00
تحميل مفتاح التخويل في ذاكرة القارئ6 بايت مفتاحمثال على تحميل مفتاح افتراضي. 0xFF 0x82 0x20 0x00 0x06 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
ترخيصرقم كتلة ترخيص القطاع (كتلة القطاع الثالث) ونوع المفتاح (A - 0x60 أو B - 0x61)مثال على الترخيص للقطاع 1. أرقام الكتلة في هذا القطاع هي 4-7 ، كتلة المقطورة هي رقم 7. 0xFF 0x86 0x00 0x00 0X05 0x01 0x00 0x07 0X60 0x00 0x00
قراءة البيانات من كتلة-مثال على قراءة البيانات من الكتلة 4 (الكتلة الأولى من القطاع 1). يتم إدخال رقم القطاع في المعلمة 2. 0xFF 0xB0 0x00 0x04 0x00 0x10
كتابة البيانات إلى الكتلة16 بايت من البياناتمثال على كتابة البيانات لحظر 4. 0xFF 0xD6 0x00 0x04 0x10 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x00

الجدول 5 - أمثلة لأوامر APDU لـ Mifare Classic

بعد التأكد من نجاح تشفير البطاقات مثل Mifare Classic ، فقد تحولنا إلى أوامر DESFire . بالرجوع إلى [8] يمكنك العثور على أمثلة بسيطة للأوامر مع التفسيرات. ومع ذلك ، بالفعل في فريق التفويض ، واجهنا سلوكًا مثيرًا للقارئ. باختصار ، قدم القارئ التفويض الكامل نفسه. اتضح أن الدعم الفني Elyctis زودنا ببرنامج ثابت خاص تضمن ذكاء easyDESFire . من الضروري فقط تحديد خوارزمية التشفير التي يستخدمها القارئ. في حالتنا ، كان 3DES.


في الحالات العادية ، يتم التفويض من خلال تبادل عدة رسائل.


  1. نرسل الأمر APDU للتخويل: 0x90 0x0A 0x00 0x00 0x00 0x00 .
  2. اعتمادًا على الخوارزمية ، تأتي مجموعة مكونة من 8 بايتات عشوائية مُشفرة بواسطة مفتاح البطاقة استجابةً للأمر ؛ ونشير إليها بواسطة RandBEnc .
  3. نقوم بفك تشفير RandBEnc ونقوم بتحول بايت إلى اليسار. تشير إلى النتيجة بواسطة RandBLeft .
  4. نحن ننتج على جانبنا مجموعة من 8 بايت عشوائي ، RandA .
  5. نقوم بتجميع RandA و RandBLeft ، والتشفير باستخدام مفتاح البطاقة وإرسال الصفيف الناتج من 16 بايت.
  6. نحصل على استجابة مفتاح الجلسة ، وبالتالي تسجيل الدخول إلى التطبيق على الخريطة.

يمكن الاطلاع على مزيد من التفاصيل حول عملية التفويض هنا [9]. الكود الموجود في جيثب مفيد أيضا [10].


أثناء الترميز ، نشأت مشاكل مع استخدام الأوامر من المصدر [8]. بمساعدة الدعم الفني لـ Elyctis ، تلقينا الأوامر اللازمة المناسبة لذكاء easyDESFire .


أثناء الترميز على Elyctis ، تم الكشف عن مشكلة واحدة كبيرة للقارئ - تأخير الاتصال . في كثير من الأحيان ، لا تصل الإشارات إلى القارئ ، لذلك يحتاج الأمر نفسه في بعض الأحيان إلى إرسالها عدة مرات. هذا السلوك أقل شيوعًا ، لكن لا يزال يتم ملاحظته عند إرسال أوامر للطباعة. نتيجة لذلك ، يتم إرسال جميع الأوامر في حلقة ، حتى يتم التنفيذ الناجح.


2.2.2. DUALi


الشركة المصنعة يعطي SDK له للعمل مع التشفير DUALi. في مرحلة العمل مع Mifare Classic ، يمكن أخذ أوامر القراءة والكتابة من رمز القالب الذي قدمه لنا الموزعون. ومن الأمثلة على ذلك C ++ و Visual Basic و Java. ومع ذلك ، كان من الممكن ترجمة التعليمات البرمجية بالكامل في C ++ فقط. الطلب الأول للحصول على مثال لرمز C # ، تم رفضنا ، أو بالأحرى ، لا يوجد لدى الموزع واحد. لا يوجد مبرمجين C ++ واثقين في فريقنا ، لذا فإن كتابة جميع الكودات كانت معقدة للغاية بسبب أشياء بسيطة للغاية. على سبيل المثال:


  1. العمل مع المصفوفات
    عند تمرير صفيف كمعلمة إلى دالة ، لم نمر حجم الصفيف. لتحديد طول الصفيف ، تم استخدام الدالة sizeOf (). ومع ذلك ، ترجع الدالة باستمرار حجم 4 ، بغض النظر عن الحجم الفعلي للصفيف. لم يتم تسجيل هذا السلوك على الفور ، لأن بعض الصفائف كانت بالفعل 4 في الحجم.
  2. تكوين جميع المكتبات
    كان هناك الكثير من الألم عند تثبيت جميع المناطق المحيطة اللازمة. نحن معتادون على أشياء مثل maven و apt (على Ubuntu). كان من المفترض أن يقوم برنامجنا بالاتصال بـ API الخلفية عبر طلبات HTTP وتشفير البيانات في Base64. لهذا ، تقرر استخدام مكتبات libcurl و opensl. تمت كتابة البرنامج نفسه في بيئة Microsoft Visual Studio. أطول ضجة مع تثبيت libcurl.

و SDK نفسها هي مكتبة دلل مكتوبة في C ++. بفضل مثال الكود ، قمنا بسرعة نسبيا بكتابة برنامج للتفاعل مع بطاقة Mifare Classic. كما ذكر أعلاه ، كانت أوامر APDU لـ DUALi محددة للغاية ، أي أن أول وحدتي بايت لا يتطابقان مع الأوامر التي يمكن العثور عليها على الإنترنت. لهذا السبب ، كان علي نسخها بشكل أعمى ، لأنه من حيث المبدأ ، كل شيء يعمل كما هو متوقع. تبدأ المشاكل باختبارات بطاقات DESFire.


مبدأ أوامر APDU لـ DESFire في DUALi مفهوم على الأقل. هناك وحدتي بايت لـ {CLA ، INS} ، لا يتغيران ، وفي الواقع يقولون إن الأمر مخصص لبطاقات مثل DESFire. المعلمات 1 و 2 أيضا لا تتغير. تحتوي البيانات المنقولة بالفعل على جزء من أمر DESFire الأصلي ، أي البايتات {INS ، البيانات} . لمدة أسبوع تقريبًا لم نتمكن من الحصول على الإجابات المتوقعة للأوامر البسيطة ، على سبيل المثال ، أمر "select application". في بداية التعليمة البرمجية ، تركنا تنفيذ APDU للأمر GetCardStatus ، والذي لم يكن تنسيق أمر لـ DESFire. ومع ذلك ، عملت وأصدرت بطاقات UID. كما اتضح ، بعد تنفيذ فرق GetCardStatus DESFire توقفت عن العمل. تم تحديد هذا الإغفال من قبل قواتنا ، بعد حوار دام أسبوعًا مع المورد ، والذي لم يؤد إلى أي شيء.


بعد شهر من التشغيل المستقر لبرنامجنا ، توصلنا إلى الحاجة إلى إعادة كتابة البرنامج في C #. السبب الرئيسي هو إعداد CI. تم تصنيف البرنامج C ++ باستخدام Microsoft Visual Studio. تعمل جميع الخوادم الخاصة بنا على نظام التشغيل Linux ، لذلك لم يكن من الممكن تشغيل أداة الإرساء باستخدام Windows ومجموعة أدوات Visual Studio Toolkit الضرورية. بالطبع ، يمكنك رفع جهاز افتراضي مع Windows ولا يزال تكوين كل شيء لـ C ++ ، لكنني لا أريد ذلك حقًا. بعد طلب رمز C # نموذجي من الشركة المصنعة بشكل متكرر ، تم تزويدنا بمثال. يمكنك كتابتها بنفسك ، استنادًا إلى تعريفات الطريقة في مثال واجهة C ++ ، لكن اتضح أنه لم يتم توضيح جميع الوظائف. لقد ساعد المثال كثيرًا وفي النهاية ، أعدنا كتابة البرنامج في C # وقمنا بإعداد CI.


2.3. طباعة


للوهلة الأولى ، يبدو أن الطباعة يجب ألا تسبب مشاكل ، لأننا في البداية نستخدم طابعات الطباعة. , , .


. , , .


2.3.1. Evolis Primacy


JSON , HTTP . Evolis Services Provider, . 8 :


  1. : , , . .

- 4-6, . . . . SDK, . .
:



  1. .

  2. .

. , . . , . . . , , , 3.


drawing

3 —


3 .


, . . QR-. , QR- . , , 4 6 .


, Evolis , Evolis Print Center, , , . .


2.3.2. Smart-51


, SmartID, . , Evolis. :


  1. , .
  2. , .

, . Smart-51. :


  1. , .
  2. , QR-

, User Manuals . , , .


2.3.3.


, . , , . . . , .


Evolis Primacy 100 , 0,76 . , 86 . Smart-51 100 , . , .


3.


. . . 17 . .


,,في المجموع
Evolis Primacy≈ 10≈ 10≈ 20
Smart-51≈ 17≈ 6≈ 23

drawing

أ)


drawing

ب)
4 — : — , —


4.


NFC -. , .. . Smart-51 Evolis Primacy. Evolis , . Smart-51 . Smart-51 Evolis. , . Evolis Primacy , . . Smart-51 . , .


, .. . , .


مراجع


  1. https://ironlogic.ru/il.nsf/htm/ru_z2usb
  2. https://www.nxp.com/products/rfid-nfc/mifare-hf/mifare-desfire/mifare-desfire-ev2:MIFARE_DESFIRE_EV2_2K_8K
  3. https://www.nxp.com/docs/en/data-sheet/MF3DX2_MF3DHX2_SDS.pdf
  4. https://www.nxp.com/docs/en/data-sheet/MF1S50YYX_V1.pdf
  5. https://www.nxp.com/docs/en/data-sheet/MF3DX2_MF3DHX2_SDS.pdf
  6. https://www.eftlab.com/knowledge-base/complete-list-of-apdu-responses/
  7. Advanced Card Systems Guide http://downloads.acs.com.hk/drivers/en/API-ACR122U-2.02.pdf
  8. Mifare Desfire communication example https://ridrix.wordpress.com/2009/09/19/mifare-desfire-communication-example/
  9. Mifare DESFire Data Sheet http://neteril.org/files/M075031_desfire.pdf
  10. GitHub DESFire https://github.com/EsupPortail/esup-nfc-tag-server/blob/master/src/main/java/nfcjlib/core/DESFireEV1.java

Source: https://habr.com/ru/post/ar481734/


All Articles