본문 바로가기

프로젝트 기록

[문을 편하게 열고 싶다] 아두이노 + RFID 태그 복사해보기(진행중)

스마트폰과 스마트워치를 등록해서 문을 편하게 열어보자! 는 대찬 목표를 세우고 시작했지만, 아쉽게도 실패로 돌아갔던 저번 포스팅에 이어, 어떻게 하면 문을 편하게 열까...? 라는 목표를 달성하기 위해, 빈 태그에 출입카드를 복사하는 소목표를 세웠다.

일단, RFID를 좀 더 쉽게 쓰고 읽기 위해 아두이노에 RFID 모듈을 붙여 사용하기로 한다.

사용하는 모듈은 RC522 모듈이다. 아두이노 RFID 키트 하면 쉽게 구할 수 있는 모듈인것 같다. 해당 모듈을 설치하고, 아두이노 IDE에 라이브러리를 설치한다. 내가 사용한 라이브러리는 여기 있다.

 

해당 라이브러리를 설치 한 뒤, Example 을 보면, 다양한 예제들이 있다. 일단, ReadNUID를 사용하면, RFID 태그의 고유값인 UID를 읽을 수 있다. 이것 말고도 다양한 예제가 있는데, UID를 바꾸는 예제(ChangeUID), 완전히 복사하는 예제(RFID-Cloner)등을 이용하면 아주 쏠쏠하게 사용할 수 있겠다 생각이 들었다.

 

하지만, 키트에 들어있는 공 카드 말고는 해당 예제를 사용해 데이터를 읽을 때 특정 섹터에서 에러가 발생했다. 더 찾아보니, 각 섹터별로 암호화를 하는 것 같다. A key, B key가 있고 막 암호화를 하고 그러는데, 일단 지금 작동되지 않는다는것을 확인하고 넘어갔다.

 

하지만 UID는 쉽게 읽을 수 있다. Playstore에서 NFC tools 로 검색하면 나오는 앱을 사용하면 된다. UID, 읽기, 쓰기를 다 할 수 있는 앱인것 같다. 이 앱을 사용해 UID를 읽고, 그 UID를 ChangeUID 코드를 사용해 작성하면, UID로만 카드를 식별하는 기기는 속일 수 있지 않을까? 하는 가설을 세우고 접근해보았다.

 

ChangeUID 코드를 수정해 내가 쓰고 싶은 UID 로 작성 한 후, 공 카드를 몇번 대보았다. 안된다... 이때 당시에는 몰랐지만, 뭔가 카드를 포멧해야 하는건가? 싶어서 NFC Tools 에서 카드 포멧을 했다.

메모리 포멧... 저걸 왜 눌렀을까...

뭔가 띠링! 하면서 포멧이 됬다. 문제는 그 이후로 그냥 카드 내용을 읽지도 못한다... 또 찾아보니 NDEF 형식으로 포멧이 된 것 같다. 해당 형식으로 포멧이 된 RFID 카드는, 아두이노로 만든 카드 리더기와 라이브러리에서 제대로 접근을 못 하는 것 같다. NDEF 포멧을 사용하면, RFID 태그에 데이터를 저장하고 읽고 쓰고가 가능하다고 하는데, 나는 그걸 원한게 아니라 그냥 UID를 바꾸고 싶을 뿐...

 

이것저것 검색해보니, 플레이스토어에 카드를 완전 초기 상태로(공장 출하 상태) 밀어주는 기능을 가지는 앱이 있다. "MIFARE Classic Tool"을 받아보면, Write tag 메뉴 안에 Factory Format이 있다. 해당 과정을 할 때도 역시 키가 필요한 것 같다. 하지만 이 앱은 잘 알려진 키들을 앱에 가지고 있는 채로 배포가 된다. (악용될 여지가 아주 높아보이지만) 그냥 레인보우 테이블을 가지고 있다고 생각하면 될 것 같다. 따라서, 키를 몰라도 왠만하면 이 앱으로 키를 찾을 수 있다.

이 앱을 사용해서 포멧하고 재시도해보았다. 역시나 안된다. 또 검색해보니 UID를 바꿀 수 있는 태그는 알리에서 판다고 한다. 하긴, 너도나도 UID를 막 덮어쓸 수 있으면 UID라는게 의미가 없어지는거니까.

이 앱 근데, 자세히 보면 별의 별걸 다 할 수 있다. 키들도 다 있겠다, 아예 덤프를 떠서 복사해버리면, 완전 같은 태그가 하나 더 생기는 것인데, 너무 위험해보였다.

더 놀라운 건, NFC Tools로 후불 교통카드를 찍었을 때 교통카드도 똑같이 Mifare Classic 1k로 떴다는 것이다. 이 말은, 후불 교통카드도 쉽게 복사를 할 수 있다는 의미로 생각되어진다. 물론 UID를 바꿀 수 있는 태그가 없으니 해본적은 없지만... 후불 교통카드같이 금전이 왔다갔다 하는건 좀 보안에 신경써야되지 않나 싶다.

 

뭐 도어락도 집 문 여는건데 이런 카드를 쓰고 있지만...

 

궁금해서 결국 UID를 바꿀 수 있는 태그 스티거를 샀다. 스티커 받으면 중앙현관 키 복사해다가 찍고 들어와야지~

스티커 오면 이 포스팅을 업데이트 할 예정이다...