2022. 3. 17. 15:30
, ,

별생각 없이 블록을 인증하고 쓰다가 보니 특정 블록에서 인증이 안되는 현상을 겪었습니다.

 

1. 원인

NFC 카드는 사용할 수 있는 블록의 번호가 정해져 있습니다.

제가 가지고 있는 카드는 미파레 1K(Mifare 1K) 호환 카드이니 인터넷에 뒤져보면....

 

0x00 ~ 0x3E까지 사용 가능하다고 나옵니다.

(참고 : ACR122U 공식 문서 페이지, ACR122U API 문서 다운로드 )

이미 가지고 있는 ACR 122U 시리즈 API문서에도 써있네요.

 

2. 사용할 수 없는 블록

여기서 'Trailer Block'은 사용할 수 없는 블록입니다.

그러니 미레파 1K는 세 블록마다 한 블록씩 사용할 수 없다는 것입니다.

Data(3) + Trailer(1) = 4 block = 1 Sector

 

이렇게 4블럭을 섹터라고 하고

이 트레일러 블록에는 이 섹터에 관한 인증정보가 들어 있다고 합니다.

 

카드 사양 찾아보면 블록 구조도 알 수 있지만 여기서 다룰 내용은 아니고....

저런 구조로 되어 있으니 카드를 읽고 쓸 때 주의하시면 됩니다.

 

 

트레일러 블록(Trailer Block)이 망가지면 섹터를 사용할 수 없다.

위에서 잠깐 언급했듯이 트레일러 블록에는 섹터에 대한 인증정보가 들어 있습니다.

이 말은 어떤 이유에서든 트레일러 블록에 문제가 생기면 해당 섹터를 사용할 수 없게 된다는 뜻입니다.

 

이건 복구 방법이 전혀 없고

다른 섹터의 블록에 접근되는지 확인하는 방법으로 망가진 섹터를 찾아낼 수 있습니다.

 

 

 

마무리

이런 건 그래도 공식 API 문서가 잘되어 있어서 별로 헤매지 않고 찾았습니다.

인터넷을 뒤져보면 카드에 대한 자세한 내용이 있으니 필요하신 분들은 구글링하시길 바랍니다.