أندرويد/إن إف سي:قراءة ATR من البطاقة الذكية (EMV)

StackOverflow https://stackoverflow.com//questions/11657028

  •  11-12-2019
  •  | 
  •  

سؤال

حصلت على بطاقة EMV الذكية وأريد التواصل معها عبر هاتفي المحمول.الاتصال نفسه يعمل بدون مشاكل عبر IsoDep، لكن لا يمكنني معرفة كيف يمكنني الحصول على ATR.بقدر ما أعرف، يجب أن يحتوي القصد على ATR، هل يمكن لأحد أن يخبرني بالرمز الذي أحتاجه لذلك؟

أو إذا لم يكن ذلك ممكنًا، فربما يعرف شخص ما كيفية إعادة ضبط البطاقة باستخدام أمر مثل SELECT حيث تكون الإجابة هي ATR.

هل كانت مفيدة؟

المحلول

لا تحتوي البطاقات اللاتلامسية على ATR.قد تكون مهتمًا بالبايتات التاريخية لـ ATS (الإجابة للتحديد)، بالرغم من ذلك.يمكنك استرداد هذه عن طريق الاتصال getHistoricalBytes():

Tag tag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));
IsoDep iso = IsoDep.get(tag);
NfcA nfcA = NfcA.get(tag);
if (nfcA == null || iso == null)
   return; // not an IsoDep+NfcA tag
byte[] histBytes = iso.getHistoricalBytes();
...

ضع في اعتبارك أن هذا يعمل فقط مع علامات ISO 14443 Type A (NfcA).بالنسبة لعلامات النوع B (NfcB)، قد ترغب في التحقيق getHiLayerResponse().

نصائح أخرى

بطاقة تم الاتصال تعود ATR.ومع ذلك، لا يمكنك الحصول على ATR من API الروبوت NFC الحالي.يرجع Android NFC API فقط البايتات التاريخية من ATR.

السبب وراء عودة البطاقة غير المرفقة ATR: يرجى ملاحظة أن ATR هو 7816 إجابة لإعادة تعيين.يتحدث القارئ (هاتف NFC في هذه الحالة) إلى بطاقات ذكية باستخدام Exchange APDU ISO 7816 (T= CL)، والذي يتم نقله عبر واجهة لا تملك ISO 14443-4.نظرا لأن هناك ISO 7816 في هذه الحالة، سوف تحصل على ATR.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top