Mifare 카드 구조에 대해 알아 보도록 하겠습니다.

아래 그림은 MIFARE 1Kbyte STANDARD CARD의 내구 구조 입니다.

0~63 BLOCK 까지 있으며 한BLOCK에 16byte씩 있습니다.
따라서 64block * 16byte = 1024byte 총1Kbyte의 용량을 가진 카드 입니다.
더 많은 용량을 가진 카드들도 있습니다.

블럭의 구조를 보면 4개 블럭씩 나누어져 있습니다. 4개 블럭이 하나의 섹터(Sector)입니다.
하나의 섹터에 하나의 Auth Key를 가지기 때문에 AUTHENTICATION 커맨드로 AUTH KEY인증시 4개의 BLOCK을 접근 할 수 있습니다.
예를 들어 5번 블럭 접근을 위해 AUTH KEY인증을 하면 4,5,6,7블럭 모두 접근 가능한 것 입니다.

섹터의 마지막 블럭은 Sector Trailer라고 하는 블럭이며, 이 Sector Trailer블럭에서 섹터의 Auth Key 및 읽기쓰기 권한을 변경 할 수 있습니다.
Sector Trailer 블럭을 실수로 잘못 변경하면 해당되는 섹터를 접근 할 수 없게 될 수도 있으니 주의 하시기 바랍니다.

섹터의 AuthKey를 변경 할 경우는 CHANGE_AUTHKEY커맨드를 이용하여 변경하시기 바랍니다.

첫번째 섹터의 첫번째 블럭은 Manufacture Blcok 이라고 하며 카드 제조사 코드 및 카드 시리얼 넘버등이 기록되어 있습니다.
아래 그림을 참고 하시기 바랍니다.



* Value Block 설정
Mifare 카드의 Block를 Value Block으로 설정 하는 방법을 알아 보겠습니다.
Value Block이란 블럭에 일정 숫자(금액)를 기입해 놓고 원하는 숫자(금액) 만큼 가감 할 수 있는 블럭입니다.

일반적인 데이타 block에 위의 포맷으로 Write하면 해당 block은 Value Block이 되는 것입니다.
value는 (ff ff ff ff)hex 까지 입력할 수 있으니 최대 4,294,967,295 까지 입력 할 수 있겠습니다.
1byte의 Adr을 지정 할 수 있습니다.
숫자(금액)를 가감하는 방법은 VALUE_INCREMENT커맨드와 VALUE_DECREMENT커맨드를 이용하면 됩니다.
block에 value block 포맷으로 10,000을 입력 해놓고 VALUE_INCREMENT(value : 500) 커맨드를 보내면 카드의 value block은 자동으로 10,500이 되는 것입니다.
Posted by E2BOX


티스토리 툴바