별생각 없이 블록을 인증하고 쓰다가 보니 특정 블록에서 인증이 안되는 현상을 겪었습니다.
NFC 카드는 사용할 수 있는 블록의 번호가 정해져 있습니다.
제가 가지고 있는 카드는 미파레 1K(Mifare 1K) 호환 카드이니 인터넷에 뒤져보면....
0x00 ~ 0x3E까지 사용 가능하다고 나옵니다.
(참고 : ACR122U 공식 문서 페이지, ACR122U API 문서 다운로드 )
여기서 'Trailer Block'은 사용할 수 없는 블록입니다.
그러니 미레파 1K는 세 블록마다 한 블록씩 사용할 수 없다는 것입니다.
Data(3) + Trailer(1) = 4 block = 1 Sector
이렇게 4블럭을 섹터라고 하고
이 트레일러 블록에는 이 섹터에 관한 인증정보가 들어 있다고 합니다.
카드 사양 찾아보면 블록 구조도 알 수 있지만 여기서 다룰 내용은 아니고....
저런 구조로 되어 있으니 카드를 읽고 쓸 때 주의하시면 됩니다.
위에서 잠깐 언급했듯이 트레일러 블록에는 섹터에 대한 인증정보가 들어 있습니다.
이 말은 어떤 이유에서든 트레일러 블록에 문제가 생기면 해당 섹터를 사용할 수 없게 된다는 뜻입니다.
이건 복구 방법이 전혀 없고
다른 섹터의 블록에 접근되는지 확인하는 방법으로 망가진 섹터를 찾아낼 수 있습니다.
이런 건 그래도 공식 API 문서가 잘되어 있어서 별로 헤매지 않고 찾았습니다.
인터넷을 뒤져보면 카드에 대한 자세한 내용이 있으니 필요하신 분들은 구글링하시길 바랍니다.