2017-11-14 22 views
0

일부 NTAG213 & NFC 태그에서 NDEF 레코드를 읽으려고합니다. 예상치 못한 사용자 메모리에 여분의 바이트가 추가되는 것 같습니다.NFC 태그 사용자 메모리 바이너리

spec을 기반으로 사용자 메모리는 블록 4에서 시작해야하지만 NTAG213 태그에서 읽을 때 NDEF 레코드 시작 전 7 개의 추가 바이트와 NTAG216 태그의 2 개의 추가 바이트가 표시됩니다.

01| 04 ae f4 d6 
02| 0a d7 49 80 
03| 14 48 00 00 
04| e1 10 6d 00 
05| 03 db 91 01 <-- NDEF starts at 91? 
06| 1a 54 02 65 
07| 6e 43 4f 43 
08| 4f 4e 55 54 
09| 20 42 4f 44 
10| 59 20 4d 49 
11| ... 

NDEF 레코드 오히려 04.

사람을합니까 블록의 시작보다, 블록 05에서 헤더 바이트 (91)로 시작하는이 나타납니다 : 여기

는 NTAG213 메모리의 예입니다 추가 바이트가 무엇인지, 또는 NDEF 데이터를 다시 읽으려면 오프셋이 무엇인지 알 수있는 방법은 무엇입니까?

바이트는 "배달시 메모리 컨텐트"중 일부와 비슷합니다. 그러나 나는 목적이 무엇인지 모르겠습니다.

답변

1

유형 2 태그의 NDEF 데이터 저장은 NFC 포럼 유형 2 태그 사양에 의해 정의됩니다. 이 사양은 사용자 메모리의 네 번째 바이트 (네 번째 페이지)가 태그의 NDEF 기능을 설명하고 다음 바이트가 TLV (Type-Length-Value) 구문 시퀀스 중 하나 (T = 3)를 포함한다는 것을 정의합니다. 실제 NDEF 데이터가 포함 된 NDEF 메시지 TLV입니다. 다른 TLV는 잠금 바이트와 같은 태그 특정 데이터를 포함하는 메모리 위치를 설명하며 NDEF 데이터를 읽거나 쓸 때 건너 뛸 수 있어야합니다.

예제 콘텐츠는 NTAG216 (NTAG213 아님)입니다.

네 번째 페이지의 내용은 NDEF 형식을 나타내는 마술 바이트 (0xE1)와 NDEF 매핑 버전 (0x10 => 버전 1.0), 그 뒤에 8의 배수로 된 원시 태그 용량 (0x6D * 8 == 872 바이트 사용자 데이터), 읽기/쓰기 권한 (0x00 => 읽기/쓰기 가능한 W/O 제한)이 뒤 따릅니다.

다섯 번째 페이지는 NDEF TLV 유형 (0x03 => NDEF 메시지), TLV 값 필드 크기를 제공하는 TLV 길이 (0xDB == 219 바이트)로 시작됩니다. 다음 바이트는 실제 NDEF 메시지 데이터이지만 일부 태그의 경우 인접 메모리가 아닐 수 있습니다 (다른 TLV는 읽기 또는 쓰기시 건너 뛸 수있는 메모리 바이트를 나타낼 수 있음).

모든 종과 호각에 대해 ndef readndef write을 학습하거나 NFC Forum specifications page에서 유형 2 태그 사양 사본을 얻을 수 있습니다.

+0

스티븐 감사합니다. TLV는 빠진 퍼즐 조각이었습니다. 그리고 당신이 지적했듯이, 나는 잘못된 태그의 내용을 나의 예 (NTAG216)에 넣었습니다. 나는 또한 0부터 1에서 시작하는 열의 번호를 매겼다. NTAG213은 실제로 사용자 mem 공간에 두 개의 TLV 블록을 가지고 있는데, 나에게도 혼란 스러웠다. – Emlyn