스마트카드 ( IC Smart Card ) 에서 카드 번호를 읽어 오는게 필요 해서
카드 리더기도 사고 이것 저것 유틸리티 프로그램도 알아 보고 했는데
정보도 많이 없고 스마트 카드 구조가 복잡 해서 계속 에러만 리턴 하고
몇일이 지났다.
우선 스마트 카드와의 통신을 위한 명령어에 대해 정의 한 표준 문서를
살펴 볼 필요가 있다.
1. ISO Standard 파악
ISO-7816-4 : 1~9 Annex: A ~ F 까지 읽어 보자. 접촉형 스마트 카드에 대한 명령어 표준.
( 공식 문서는 돈 주고 사서 봐야 하는 것 같으니 패스 하고 여기 사이트를 참고 )
https://cardwerk.com/iso-7816-part-4
2. 실제 카드리더기에서 신용 카드 데이터를 살표 보자.
실제 신용 카드에서 데이터를 읽어 보여 주는 프로그램 찾기가 정말 힘들었다.
다들 명령어만 입력 할 수 있는 정도 인데, 명령어를 알아야 사용 하던 하는데 계속 에러만 리턴 되었다.
난 그냥 카드 꼽아서 출력 되는 데이터를 한 번 보고 싶다고...
찾았다.
Smart Card Shell : scsh3 를 실행 하고 JavaScript 명령이나 js 파일을 로드 하는 JavaScript 인터프리터
https://www.openscdp.org/scsh3/index.html
Smart Card Shell - Script Collection : 각 카드에 따른 예제 스크립트를 모아 놓고 설명을 보거나 및 다운로드 받을 수 있다.
scsh-scripts 폴더 안에 여러가지 스크립트 들이 들어 있다.
예) EMV 카드를 접근 하기 위해서 ( Master / Visa / 등등 )
./scsh3 를 실행
-> load("emv/reademv.js"); 을 입력 : 샘플은 Master Card만 읽을 수 있는 듯.
위와 같이 하면 카드 종류, 소유자 이름, 카드 번호, 등등 정보를 볼 수 있다.
https://www.openscdp.org/scripts/tutorial/emv/index.html
ATR 값과 매칭 해 볼 수 있는 스마트 카드 리스트
http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt
APDU 응답 상태 코드 리스트
https://www.eftlab.com/knowledge-base/complete-list-of-apdu-responses/
3. 신용 카드에 오고 가는 명령어와 데이터에 대한 설명이 필요 하다.
위의 emv/reademv.js의 소스 및 리턴 값을 가지고 줄 단위 설명 하고
추가 적으로 여러가지 카드를 가지고 데이터를 읽어 올 수 있는 방법에 대해 설명 해준다.
( 실제 패킷을 가지고 예를 들어 설명 해줌. )
https://sites.google.com/site/kriengten/smartcard
추가적으로 참고 사이트
https://www.intelisecure.com/smart-cards-a-brief-introduction/
https://sites.google.com/site/kriengten/smartcard-reader
4. 실제 코딩에 필요 한 라이브러리
PCSC-lite Project : PCSC API 라이브러리 / 문서 / pcscd / pcsc-tools 관련
PC/SC 라이브러리를 사용한 예제 코드
https://ludovicrousseau.blogspot.com/2010/04/pcsc-sample-in-c.html
MS WinScard.h 관련 문서
https://docs.microsoft.com/en-us/windows/win32/api/winscard/
5. 기타 사이트 링크
ATR Data Parser :
http://www.ruimtools.com/atr.php
JavaCard OS : Java Card 개발 통합 키트 부터 ATR / APDU Parser 다양한 정보를 얻을 수 있다.
GitHub에서 EMV 카드 처리에 관련된 툴 및 소스에 대한 모음집
Online ADPU / Response Parser 및 카드 별 각종 명령어 및 리턴 패킷을 볼 수 있고 TLV / Error State 리스트 등등 볼 수 있음.
( 단, 로그인 해야지만 Parser는 이용 가능 )
https://iso8583.info/tools/#labels
6. 관련 책 추천
Smart Card Programming - Ugo Chirico
: 2014년도 발행? 찾아 보면 pdf도 있는 듯. 알라딘에 책 있어서 약 45천원에 구매.
https://books.google.co.kr/books/about/Smart_Card_Programming.html?id=atjSoAEACAAJ&redir_esc=y
'Programming' 카테고리의 다른 글
C# List 배열 회전 시키기 - Right Rotation - Unity3D (0) | 2020.03.27 |
---|---|
C# - class 객체 배열 new 할당 후 배열 요소 null 접근 문제 해결 (0) | 2020.03.14 |
C# - Enum 형의 내부 형식 변경과 유용한 메소드 - byte (0) | 2020.03.13 |
오픈JDK 설치 및 환경 설정 ( OpenJDK ) (0) | 2020.02.17 |
문자열 앞에 R의 의미 - Raw String Literal (0) | 2020.02.06 |