العمل مع أوامر APDU باستخدام مثال EToken

"... الطريق ليس من الصعب فهمه. قوى الطبيعة ، الميول الطبيعية ، أنماط الأحداث ...
إن الفهم البدائي للعالم يلاحظ أربعة عناصر فقط ولا يذهب أبعد من ذلك. إنه يشبه الكون إلى أربع ظواهر مفهومة ".
ستيفن اريكسون.
"منتصف الليل المد."

صورة

مرحبا يا هبر!

لقد تم طرح موضوع APDU مرارًا وتكرارًا ، ولكن البطاقات الذكية المعنية بشكل أساسي ، والتي تحتاج إلى قارئ بطاقة وبطاقة ليست مؤلمة ، بالإضافة إلى أن البرنامج ، بما أن العمل مع واجهة وحدة OpenSC ، على الأقل في Window $ ، أمر غير مريح على أقل تقدير.
للقيام بذلك ، كتبت برنامجًا صغيرًا بواجهة نافذة تعمل من خلال winscard.
المصادر والثنائيات يمكن تنزيلها هنا .
هذا المترجمة تحت Visual Studio 2008 ، تحتاج إلى إضافة مشروع WinSCard.Lib من Microsoft Windows SDK إلى المشروع.

على الأرجح سيكون هناك سمكة زرقاء EToken PRO Java 72 K مع شهادات EDS منتهية منذ سنوات عديدة (باستخدام "معركة" مع EDS موجود ، لا ينصح الرمز المميز للتجارب!).
مناسبة أيضًا لـ JaCarta Pro ، والتي تختلف عن etokens من الخارج فقط.
يمكنك أيضًا محاولة العمل مع Gemalto SafeNet eToken 5100 ، حيث يمكنهم عرض محتويات الدلائل ، لكنهم لن يتمكنوا من قراءة الملف بسبب المهلة الصغيرة جدًا (ربما عدة آلاف من الثانية) بين الأوامر لتحديد الملف وقراءته ، ونتيجة لذلك يشير الأمر إلى قراءة الملف يدويًا بالفعل في مكان فارغ (رمز الخطأ 69 85). ربما هذا هو أحد الأسباب التي في بعض الأنظمة الأساسية على هذه الرموز لم تعد ترى المفاتيح. فيما يتعلق بـ SafeNet eToken 5100 (مع نقش صريح على الجانب "صنع في الصين") ألاحظ ما يلي: "JaCarta Single Client" لا يريد العمل معه ويعرض رسالة مفادها أن هذا المنتج غير مدعوم ، Aladdin's PKI Client 5.1 بت لا يراها ، ولكن الإصدار 32 من نظام التشغيل Win XP يعمل معها ، على الرغم من هذا الرمز المميز ، فمن المستحسن تثبيت عميل مصادقة SafeNet الأصلي ، بالطبع.

لن تعمل الرموز الأخرى ، بما في ذلك عائلة JaCarta ، نظرًا لأن أوامر APDU لهم جميعًا مختلفة تمامًا ولا تتطابق قيمتها الرقمية الموضحة في معيار ISO7816.

يمكن العثور على تفاصيل حول تنسيق أوامر APDU ، على سبيل المثال ، هنا .
يمكن للقارئ ذو السمكة الزرقاء التعرف على عمل APDU دون الاستيقاظ من الأريكة.
من الضروري تثبيت برنامج التشغيل لـ eToken eToken PKI Client 5.1 أو "JaCarta Single Client" وتوصيل الرمز المميز.

للحصول على عرض تفصيلي لمحتويات الرمز المميز في شكل مناسب والتوافق مع ما تعطيه أوامر APDU ، يمكنك استخدام النص المكتوب بواسطةي على Autoit JaCarta Editor .

قم بتشغيل APDUExplorer ، حدد "Aladdin Token JC 0" أو "ARDS JaCarta 0" أو "SafeNet Token JC 0" من قائمة القراء ويمكنك إدخال الأوامر.
يمكنك الدخول على حد سواء من خلال القولون وعبر المسافات أو كل ذلك معا.

أولاً ، يمكنك التحقق من الأداء بالنقر فوق "التحقق من ATR" والحصول على استجابة رمزية.

الأمر الأول هو اختيار التطبيق الصغير الافتراضي والانتقال إلى الدليل الجذر باستخدام المعرف 3f00 (ربما يكون هذا المعرف هو الشيء الوحيد المشترك بين الرموز المميزة لأي بائعين).
00: A4: 00: 04: 00

بعد ذلك ، نحصل على قائمة المجلدات في الدليل الجذر
80: 01: 01: 00: 04: 09: 02: 00: 00: CD (الأمر هو ثابت "قائمة مجلدات التقرير").
يجب تلقي رد:
0a 02 66 66 0b 01 00 90 00

البايت الثاني في الاستجابة هو حجم البيانات المستلمة - وحدتي بايت ، أي مجلد واحد فقط (يأخذ معرف الملف أو المجلد في APDU دائمًا وحدتي بايت).
ونحن نرى مجلد واحد فقط مع معرف 66 66 ، ودعا الدليل علاء الدين AID.

تقرير قائمة الملفات (ثابت أيضا)
80: 01: 02: 00: 04: 09: 02: 00: 00: CD
يجب أن يتم استلامها
0a 00 0b 01 00 90 00
الجواب في الموضع 01 هو 00.

انتقل إلى الدليل 66 66
00 A4 08 04 02 66 66 00
هذا أمر SELECT FILE وتنسيقه: أربع بايتات ، والأمر 00 A4 08 04 نفسه ، ثم حجم حقل بيانات المسار الكامل (في المثال 02 بايت) ، ثم يجب إكمال المسار نفسه (في المثال 66 66) و 00.

تقرير قائمة الدلائل 66 66
80: 01: 01: 00: 04: 09: 02: 00: 00: CD
بايت resv:
0a 04 50 01 50 00 0b 01 00 90 00
يشير حقل الاستجابة 01 (حجم الاستجابة) إلى 04 ، أي 4 بايت = مجلدين 50 01 و 50 00 ، بينما 50 01 هو مجلد الخدمة ، و 50 00 هو الرئيسي ، ويسمى دليل PKCS # 11 ، حيث يتم تخزين جميع البيانات

تقرير دليل قائمة 66 66
80: 01: 02: 00: 04: 09: 02: 00: 00: CD
بايت resv:
0a 00 0b 01 00 90 00
لا توجد ملفات هنا.

أظهرت الدراسات أنه لا توجد مجلدات وملفات مرئية في الدليل 50 01 ، لذا انتقل إلى الدليل الرئيسي 50 00
00 A4 08 04 04 66 66 50 00 00
تقرير قائمة المجلدات
80: 01: 01: 00: 04: 09: 02: 00: 00: CD
تعتمد الإجابة على ما يتم تخزينه على الرمز المميز.
تقرير قائمة الملفات
80: 01: 02: 00: 04: 09: 02: 00: 00: CD
بايت resv:
0a 14 00 0f 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0a 0b 01 00 90 00
نرى 14 ملفًا (حقل الاستجابة 01) ، ثم كل 2 بايت هذه أسماء ملفات ، ثم هناك معلومات الخدمة.

كل رمز مميز للنماذج المدروسة يحتوي دائمًا على دليل نظام b000 وملف النظام 0002 فيه ، حاول قراءته ، ويمكن قراءة الملفات الأخرى بنفس المبدأ.
انتقل إلى الدليل b0 00
00 A4 08 04 06 66 66 50 00 B0 00 00
الحصول على قائمة الملفات
80: 01: 02: 00: 04: 09: 02: 00: 00: CD
بايت resv:
0a 02 00 02 0b 01 00 90 00
نرى الملف 00 02 (البايت في حقل الاستجابة 01 هو حجم الاسم (يأخذ كل اسم دائمًا وحدتي بايت ، الحقول التالية هي أسماء الملفات ، وفي هذه الحالة يوجد ملف واحد فقط ، يتم تحديده بقيمة الحقل 01).

حدد الملف 0002 من B000 لكامل المسار
00 A4 08 04 08 66 66 50 00 B0 00 00 02 00
بايت resv:
01 01 02 02 02 00 02 03 02 00 10 04 08 00 ff 00 00 ff ff ff ff ff 05 00 90 00
تنسيق الاستجابة كما يلي: التمهيد - 2 بايت ، نوع الملف - 1 بايت (02 ملف ، مجلد 01) ، محدد - 2 بايت ، اسم الملف - 2 بايت ، محدد - 2 بايت ، حجم الملف - 2 بايت ، محدد - 2 بايت ، حقوق الوصول - بايت واحد (00 - متاح للجميع ، 63 محمي برمز PIN). ثم تأتي بعض المعلومات العامة ، والتي تنتهي بكود التنفيذ الناجح للأمر APDU - 90 00.

اقرأ هذا الملف ، آخر وحدتي بايت من الأمر هي حجم المخزن المؤقت كم تقرأ (في هذه الحالة ، يساوي حجم الملف).
80 18 00 00 04 0E 02 00 00 10
بايت resv: (القيمة في كل حالة ستكون مختلفة):
00 06 63 61 72 64 63 66 00 00 00 00 00 00 00 00 00 90 00

لا أعتبر المصادقة على etoken هنا ، لأنه يتكون من سلسلة من أوامر الإجابة على الأسئلة ويتم تشفيرها (هناك مشروع Antitoken حيث تم حل مشكلة التخويل على هذه المنتجات بشكل أساسي).
تدعم بعض الرموز الأخرى ، مثل JaCarta GOST-2 ، المصادقة عن طريق تمرير رمز سري.

يمكنك الحصول على قيم APDU لأوامر أي من البطاقات الذكية والرموز المميزة عن طريق اعتراض حركة مرور WinSCard.dll عن طريق تشغيل متشمم تم تجميعه من هنا (أظهرت التجارب أن هذا الشم تم تثبيته وتشغيله فقط تحت Win XP).

للرجوع إليها ، النتائج المحتملة لتنفيذ أوامر APDU:
90 00 - حسنا
69 85 - شروط الاستخدام غير مستوفاة
63 00 - فشل مصادقة تشفير المضيف (تحويلة مصادقة)
64 00 - لا يوجد تشخيص محدد
67 00 - طول خاطئ في Lc
67 XX - خطأ ، معلمة غير صحيحة P3 (رمز ISO)
68 81 - القناة المنطقية غير مدعومة أو غير نشطة
69 82 - الوضع الأمني ​​غير راضٍ
69 83 - رمز سري مقفل
69 85 - لم يتم تحديد EF حاليًا ، لا يوجد أمر لمراقبة / عدم وجود ملف إدارة المعاملات
6A 80 - المعلمات في حقل البيانات غير صحيحة
6A 81 - البطاقة محظورة أو الأمر غير مدعوم
6A 82 - لم يتم العثور على الملف
6A 85 - Lc غير متوافق مع هيكل TLV
6A 86 - P1 P2 غير صحيح
6A 88 - البيانات المشار إليها غير موجودة (التحديث الأولي)
6D 00 - تعليمات غير صالحة
6E 00 - فئة غير صالحة

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


All Articles