2012-03-21 4 views
0

나는 태그를 처리하기 위해 발견 된 NFC 태그의 고유 한 UID에 의존하는 Android 프로젝트를 작업 중입니다. 다음 코드를 사용하여이 UID를 추출합니다.Android에서 NFC 태그의 UID가 임의인지 여부를 감지하는 방법은 무엇입니까?

byte[] extraID = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID); 

그러나 일부 기술의 경우이 UID는 보안 목적으로 무작위로 생성됩니다. 아무도 내가 임의로 생성 한 UID를 어떻게 발견 할 수 있었는지 생각할 수 있습니까? 어떤 종류의 깃발이 설정되어 있습니까?

참고 : 간단한 해결책은 태그를 두 번 읽고 UID를 비교하는 것입니다. 그러나 나는 이것을 피하고 싶다.

답변

3

에서, ID가 있으면 정확히 4 바이트 길이 랜덤하고는 0x08로 시작 그것은이 UID의 종류를 나타내는 필드를 포함한다. 4 바이트 길이의 0x80으로 시작하는 임의의 ID로 구성 할 수있는 일부 카드 (MIFARE DESFire)가 있습니다.

NfcB (및 NfcB와 결합 된 IsoDep)에는 임의 ID에 예약 된 미리 지정된 ID 범위가 없습니다. 사실, 모든 NFC ID는 임의의 ID가 될 수 있습니다. NfcB ID는 실제로 "Pseudo Unique PICC Identifier"를 나타내는 PUPI라고합니다. 그래서 그 이름은 유일성이 보장되지 않는다는 것을 이미 나타냅니다.

NfcF 및 NfcV의 경우, ID는 일반적으로 랜덤하지 않습니다.

임의의 ID를 감지하기 위해 태그를 두 번 읽는 것은 RF 필드에서 태그를 제거한 경우에만 작동합니다. 태그는 일반적으로 Rf 필드에 의해 전원이 공급되는 한 동일한 임의의 ID를 유지합니다.

+0

너의 답변이 더 좋다! –

+1

이것은 실제로 약간 놀라운 일입니다. 내가 읽을 때마다 그것이 바뀌면 UID는 어떤 용도로 사용됩니까? – zundi

-1

이 RFC : http://tools.ietf.org/html/rfc4122#section-4.1.3은 UID 형식을 정의합니다. (NfcA와 결합 IsoDep 및/또는 MifareClassic) NfcA 들어

Msb0 Msb1 Msb2 Msb3 Version Description 

    0  0  0  1  1  The time-based version 
            specified in this document. 

    0  0  1  0  2  DCE Security version, with 
            embedded POSIX UIDs. 

    0  0  1  1  3  The name-based version 
            specified in this document 
            that uses MD5 hashing. 

    0  1  0  0  4  The randomly or pseudo- 
            randomly generated version 
            specified in this document. 

    0  1  0  1  5  The name-based version 
            specified in this document 
            that uses SHA-1 hashing. 
+0

이것은 nfc와 아무 관련이 없습니다. –

+0

아, NFC가 비표준 UID를 사용합니까? – jimw

+0

NFC UID (또는 실제로 ISO/IEC 14443 UID)는 RFC4122 UUID보다 선행합니다. AFAICT, 2 가지 유형 사이에는 관계가 없습니다. –

관련 문제