2016-12-20 10 views
2

Android에서 NFC를 사용하여 학습을 시작했습니다. NDEF 형식으로 쉽게 읽고 쓸 수 있습니다.MEFARE DESFire EV1을 NFC 포럼 유형 4 NDEF 용 태그로 구성

내 문제가 MIFARE DESFire으로 EV1, 나는 일부 공장의 카드를 가지고 있고 나는 그들이의 NFC 포럼 형식 결과적으로 4 태그 사양 및 준수하지 않는 읽거나 쓸 수에 동의하지 않는 것이 이해 NDEF 형식 (공장 출하시).

android.nfc.tech.NfcA 또는 android.nfc.tech.IsoDep을 통해 태그에 액세스 할 수 있습니다.

지금까지 나는 IsoDep.transceive() 메서드를 사용하여 NFC Forum Type 4 준수 태그를 만들 수있는 명령을 전달해야 함을 이해합니다.

하지만 많은 문제가 있습니다. TagWriter를 사용하고 있으며 서비스를 완벽하게 수행합니다. NDEF 데이터 세트를 사용할 때마다 카드를 NFC 포럼 유형 4 태그 및 결과적으로 NDEF 태그로 만드는 루틴을 자동으로 수행합니다.

그러나이 절차를 직접 수행 할 수있는 간단한 예제를 찾을 수 없습니다. NFCForum-TS-Type-Tag-2.0 사양 문서를 읽은 후에도 여전히 매우 분실했습니다.

TagWriter 응용 프로그램이 수행하는 프로세스를 수행 할 수있는 실용적인 예제가 있습니까?

  • NfcA/IsoDep (확인 여기)는
  • 카드가 NFC 포럼의 유형 4 태그 사양
  • 시작 android.nfc.tech.Ndef
  • 으로 태그를 인식을 준수합니다 인식 읽을 수 있도록하고 NDEF의 쓰기

답변

4

MFCARE DESFire EV1을 NFC Forum Type 4 태그 (V2.0)로 준비하는 절차는 플랫폼 독립 NFC 포럼 사양의 일부가 아닙니다. 대신,이 절차는 칩 제조업체 (NXP)의 응용 노트 AN11004: MIFARE DESFire as Type 4 Tag에 정의되어 있습니다. 절차는 다음과 같습니다.

  1. Android가 이미 Ndef 태그 기술을 감지하면 작업이 완료됩니다. Android가 NDEF 데이터 파일에 포함 된 NDEF 태그 애플리케이션 및 NDEF 메시지를 감지하려고하기 때문에 Ndef 태그 기술을 찾는 것은 해당 태그가 이미 NDEF 용으로 준비되었음을 의미합니다 (즉 이미 NFC 포럼 유형 4 태그로 구성되어 있음).

  2. 그렇지 않으면 태그가 실제로 DESFire EV1 태그인지 확인합니다. AN10833: MIFARE Type Identification Procedure에 설명 된 유형 식별 절차와 DESFire 태그에서 얻은 버전 정보에 따라이 작업을 수행 할 수 있습니다.

  3. 태그가 DESFire EV1 태그라는 것을 알았 으면 (그리고 태그에 필요한 수정을 적용하기 위해 마스터 응용 프로그램에 대한 충분한 액세스 권한이 필요하며 인증 단계가 필요할 수 있음) 일단 먼저 NDEF 태그 응용 프로그램. 이것은 작성 중에 ISO 7816-4 DF 이름 (= AID)이 D2760000850101으로 설정된 DESFire 응용 프로그램입니다. DESFire AID, ISO 파일 ID에 대해 선택한 값은 적절한 T4T 작업에 중요하지 않습니다 (EVF 이전 버전의 DESFire에서는 다릅니다). 주요 설정은 사용 시나리오에 따라 다릅니다.응용 프로그램을 작성하는 동안 설정해야하는 다른 중요한 매개 변수는 응용 프로그램 내의 파일에 대한 ISO 7816-4 파일 식별자를 허용하는 것입니다 (키 설정 2 바이트 세트의 비트 5는 '1'로 설정 됨).

  4. 새로 만든 응용 프로그램을 선택하십시오.

  5. 크기가 15 바이트 인 새 표준 데이터 파일 인 기능 컨테이너 파일을 만듭니다. ISO 7816-4 파일 ID를 E103으로 설정해야합니다. Com.Set을 설정하여 일반 통신을 허용하십시오. 바이트에서 0x00. 나중에 초기화 할 때 파일 내용을 수정할 수 있도록 액세스 권한 필드를 설정하십시오.

  6. 새 표준 데이터 파일 인 NDEF 데이터 파일을 새로 만듭니다. 태그를 NDEF 태그로만 사용하는 경우 대개 남은 사용 가능한 공간을 모두 사용합니다. ISO 7816-4 파일 ID를 E104으로 설정하십시오. Com.Set을 설정하여 일반 통신을 허용하십시오. 바이트에서 0x00. 읽기 전용 태그의 경우 액세스 권한 필드를 0xE000으로 설정하고 Ndef 태그 기술을 통해 읽기 및 쓰기 액세스를 허용해야하는 태그의 경우 0xEEE0로 설정하십시오.

  7. 은 기능 컨테이너 파일을 선택하고 할 수있는 능력 컨테이너 데이터 쓰기 :

     
    000F 20 003A 0034 04 06 E104 xxxx 00 yy 
    
    xxxx가 NDEF 데이터 파일의 크기

    yy이 × 00 인 경우 파일을 자유롭게 쓸 수 또는 0xFF의 경우 파일은 읽기 전용입니다.

  8. NDEF 메시지 파일을 선택하고 0x0000으로 처음 2 바이트를 씁니다 (파일이 비어 있음을 나타 내기 위해). DESFire (EV1) 카드의 NDEF 태그 응용 프로그램 구조를 만드는 것은 네이티브 또는 MIFARE DESFire의 포장 네이티브 명령 세트 중 하나를 사용하는 데 필요한

참고. 일부 Android 버전은 기본 명령에 알려진 문제점을 유발하기 때문에 래핑 된 원시 명령을 사용하는 것이 좋습니다. DESFire 제품 데이터 시트에 설정된 DESFire 명령에 대한 자세한 내용을 볼 수 있습니다 (NXP의 NDA에서만 사용 가능).

+0

바이트 순서에 대해 의견을 말씀해 주시겠습니까? 문서 AN11004에 따르면 "NDEF 사양 데이터가 네트워크 바이트 순서로 표시됩니다"(빅 엔디안)이지만 APDU 명령은 LSB 첫 번째 표기법을 사용합니다. APDU 명령을 보낼 때 위의 데이터 (항목 7)를 역순으로 발행해서는 안됩니까? NXP 앱 (안드로이드)이 Desfire Applications라는 제목 아래에서 "Type 4 Tag version 1"을 인식하기 때문에 애플리케이션을 올바르게 설정할 수 있었지만 NDEF 탭으로 이동하면 "NDEF 데이터 저장 공간이 없습니다" 가 표시됩니다. 따라서 내 문제가 CC 또는 NDEF 파일인지 여부를 알 수 없습니다. 감사. – Paul

+0

@ Paul 관심있는 분야에 대해 좀 더 구체적으로 설명해 줄 수 있습니까? 어떤 APDU가 명령하나요? MIFARE DESFire 명령어를 언급하고 있습니까? 이들은 LSB 첫 번째 표기법을 사용합니다 (그러나 이진 데이터가 아닌 정수 필드에만 영향을줍니다). CC의 필드는 올바른 순서로되어 있습니다 (위의 대답에서 CC 파일에 기록해야 함). –