프로그래밍/하드웨어

[NFC/RFID] NFC 리더기 'ACR122U'는 휘발성 인증만 가능하다.

당근천국 2022. 3. 11. 15:30

이번에 테스트한다고 들어온 NFC 리더기(NFC Reader)는 ACR122U 시리즈(제가 사용하는 건 ACR1252U) 입니다.

그런데 아무리 해도 인증키가 불러와 지질 않는 겁니다.

 

 

1. 수많은 샘플과 프로그램들

인터넷에 돌아다는 각종 소스와 NFC(or RFID or Smart card)프로그램을 들도 같은 증상인 데다

오류 코드라고 내뱉는거라고는 "Error cord : 1F(31)" 뿐입니다.

 

"Error cord : 1F(31)"이 에러 코드는 사실상 알 수 없는 에러를 의미합니다.

(다른 의미가 있긴 하지만.... 실제거의 알 수 없는 에러 용도입니다 ㅎㅎㅎ)

웃긴 건 알고봤더니 이 에러는 내 실수 였.....

 

 

"Error cord : 1F(31)"이게 나오면 일단 명령 자체를 제대로 구성해서 보내고 있는지 의심해봐야 합니다.

 

 

이레저래 해보다가 결국 도달한 게 '63 00' 에러입니다.

네..... 인증키 불러오다 에러 났다는 소립니다 ㅋㅋㅋㅋㅋ

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

....

그나마 다행인 건 '63 00' 에러가 난나는 건 APDU명령자체는 성공했다는 의미입니다.

(명령을 기계가 정상적인 이유로 거부한 거지....)

 

 

2. 빛을 발견하다!

이렇게 인터넷을 헤매다가 발견한 글이.....

 

I'm rather surprised that you found one ACR122U that supports key structure (P1) set to 0x20. The API manual of the reader (see section 5.1 Load Authentication Keys) clearly indicates that values other than 0x00 are reserved (i.e. must not be used). This means that the ACR122U only supports card keys (i.e. authentication keys for cards) in volatile memory (i.e. keys are cleared from memory when the reader is unplugged).

stackoverflow - Michael Roland님 답변 MIFARE Classic 1K load authentication keys failure with ACR122U

 

공식 API 문서에 보면 'Key Structure'는  '0x00'만 쓰라고 되어있다고?????????

 

지금 며칠째 API 문서를 보고 명령 날리고 있는데 이게 뭔소리야 ㅋㅋㅋㅋㅋㅋ

아.....

 

하....... 진짜...... 이게 뭔가요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

'0x00' 말고는

"예약"

돼 있다는 소립니다.

프로그래밍에서 예약돼있는건 쓰지 말라는 소리죠.

 

 

3. '0x00'을 써보자

'0x00'만 쓰라고 명시해놔야지 딸랑

"예약 ㅋ"

라뇨 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

일반적인 NFC나 RFID 예제를 보면 'Key Structure'를 '0x20'으로 테스트하고 있습니다.

'pcsc-sharp' 공식 예제에서도 'Key Structure'를 ' 0x20으로 테스트하고 있다.

 

아마도 테스트할 때 인증이 계속 날아가면 불편해서 그런 거 같은데......

어찌 됐건 휘발성 메모리를 사용하는 '0x00'으로 테스트하면 잘됩니다.

키가 잘 읽어졌다.

 

 

마무리

결국 저 문제는 해결되고 

일사천리로 해결이.....