문제

내 휴대폰으로 통신하고 싶은 EMV 스마트카드를 받았습니다.통신 자체는 IsoDep을 통해 문제 없이 작동하지만 ATR을 어떻게 얻을 수 있는지 알 수 없습니다.내가 아는 한 의도에는 ATR이 포함되어야 합니다. 누군가 나에게 필요한 코드를 알려주실 수 있습니까?

또는 이것이 가능하지 않은 경우 ATR이 답인 SELECT와 같은 명령을 사용하여 카드를 웜 리셋하는 방법을 아는 사람이 있을 수 있습니다.

도움이 되었습니까?

해결책

비접촉식 카드에는 ATR이 없습니다.하지만 ATS(Answer to Select)의 과거 바이트에 관심이 있을 수 있습니다.다음을 호출하여 검색할 수 있습니다. 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 유형 A 태그(NfcA).유형 B 태그의 경우(NfcB) 조사해 보시기 바랍니다. getHiLayerResponse().

다른 팁

비접촉식 카드는 ATR을 반환합니다.그러나 현재 Android NFC API에서 ATR을 얻을 수 없습니다.Android NFC API는 ATR의 역사적 바이트 만 반환합니다.

비접촉식 카드가 반환하는 이유는 ATR을 반환합니다. ATR은 RESET에 대한 7816 답변입니다.리더 (이 경우 NFC 폰)는 비접촉식 인터페이스 ISO 14443-4를 통해 운반되는 ISO 7816 (T= CL) APDU 교환을 사용하여 스마트 카드와 협의합니다.이 경우 ISO 7816이 있으므로 ATR을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top