2017-01-31 2 views
1

현재 NFC 기능을 갖춘 Windows 10 휴대 전화를 사용하여 ID를 찾기 위해 스마트 카드의 UID/일련 번호를 읽는 프로젝트를 만들고 있습니다. 사람. UID/일련 번호를 얻으려고하는 카드는 NXP MIFARE DESFire EV1입니다. 내가 찾고있는 ID는 카드에 인쇄되어 있으며 Android 앱을 사용하는 친구의 휴대 전화를 사용하여 액세스 할 수 있습니다. 즉, 방법을 모르더라도 번호에 액세스 할 수 있습니다.NXP MIFARE DESFire EV1 카드의 UID/일련 번호 얻기

카드에 APDU 명령을 보낼 수 있지만 찾고있는 UID/일련 번호를 가져 오는 데 사용할 카드를 모르겠습니다.

ID를 얻기 위해 어떤 APDU 명령을 카드로 보내야합니까? 내가 찾고있는 ID는 7 바이트입니다.

+0

죄송합니다. 비 스마트 카드를 읽는 것은 독자의 번역 서비스에 크게 의존하며 사용자는 언급하지 않았습니다. [이 질문] (http://stackoverflow.com/q/12174000/1435475)에서 출발점을 찾을 수 있습니다. – guidot

답변

1

일반적으로 비접촉식 카드의 UID (anti-collision identifier)와 같은 검색 매개 변수는 독자와 응용 프로그램 사이의 독자 및 추상화 계층에 크게 의존합니다. 예를 들어 Android에서는 NFC 태그/비접촉식 스마트 카드의 충돌 방지 식별자를 얻는 간단한 방법 getId()이 있습니다.

그러나 MIFARE DESFire의 경우 APDU를 통해 해당 매개 변수를 얻을 수있는 방법이 있습니다. 당신은 단순히 버전 정보 (또한 카드 UID)를 조회하기 위해 GET 버전 명령을 보낼 수 있습니다

 
C-APDU: 90 60 0000 00 
R-APDU: 04 01 YY 01 00 ZZ 05 91AF 

C-APDU: 90 AF 0000 00 
R-APDU: 04 01 01 01 04 ZZ 05 91AF 

C-APDU: 90 AF 0000 00 
R-APDU: XXXXXXXXXXXXXX UUUUUUUUUU VV WW 9100 

카드가 무작위로 충돌 방지 식별자 인 경우 값 XXXXXXXXXXXXXX 카드의 UID (또는 모두 제로입니다 방법).

MIFARE DESFire 버전 정보 here에 대한 구문 분석기 (주석에 ThomasRS이 지적되어 있음)가 있습니다.

+1

완벽하게 작동합니다. 소중한 시간을 가져 주셔서 대단히 감사합니다. 당신은 나를 위해 얼마나 도움이 될지 모르겠다. 나는 결코 너를 잊지 않을 것이다 – ZakFS

+2

파서 (https://github.com/skjolber/external-nfc-api/blob/master/externalNFCClient/src/main/java/com/skjolberg/nfc/desfire/VersionInfo.java) – ThomasRS

관련 문제