2017. 7. 25. 16:14ㆍIT관련
Pyscard라는 것은 Python용 스마트카드 패키지이다.
과거 pyscard 1.7.x는 Windows용 설치파일이 배포되었는데, 1.9.x부터 별도의 설치파일은 없고 소스를 직접 받아서 설치해야 한다.
Pyscard 소스 다운로드
https://pyscard.sourceforge.io/index.html#download
접속해 보면 3군데에서 다운로드 받을 수 있으니, 원하는 곳에서 알아서 받도록.
필요 프로그램
소스를 받아서 보면 README에 설치에 필요한 프로그램이 나와 있다. 그런데 pyscard의 버전은 1.7.x로 되어 있다. 아마도 업데이트가 안된듯 싶다.
1. SWIG
이게 뭔가 했더니, C/ C++로 작성된 프로그램을 Javascript, Perl, PHP, Python, Tcl 그리고 Ruby에서 호출해서 사용할 수 있도록 해주는 유틸리티이다. JNI(Java Native Interface)같은 건가 보다.
이 유틸리티도 좀 알아두면 유용할 듯 싶다.
Windows에서 pyscard가 스마트카드와 통신하기 위해서는 PC/SC(Personal Computer/Smart Card) 라이브러리의 API를 사용해야 할텐데, 이걸 쉽게 하기 위해 C로 먼저 만들고 SWIG를 이용해 python하고 연결한 것으로 보인다.
다운로드 후 압축 해제하고 해당 디렉토리가 환경변수 $PATH에 등록이 되어 있어야 한다.
2. Microsoft Visual C++ Compiler for Python 2.7
Python 2.7.x를 사용한다면 설치해야 한다.
3. Visual C++ 2015 Build Tools
http://landinghub.visualstudio.com/visual-cpp-build-tools
Python 3.6.x를 사용한다면 VC 2015 컴파일러가 필요하다.
Build & Install
다운로드 받은 소스를 압축 해제한 다음 콘솔(console)창을 실행시켜 다음과 같이 입력한다.
C:\pyscard-1.9.5>python setup.py build_ext install
그러면 다운로드 받은 소스를 컴파일하고 python이 설치된 디렉토리에 pyscard 패키지를 설치한다.
테스트
C:\>python
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from smartcard.System import readers
>>> from smartcard.util import toHexString
>>> r=readers()
>>> print(r)
['OMNIKEY CardMan 1021 0']
>>> connection = r[0].createConnection()
>>> connection.connect()
>>> SELECT = [0x00, 0xA4, 0x04, 0x00, 0x08, 0xA0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00]
>>> data, sw1, sw2 = connection.transmit( SELECT )
>>> print("%X %X" % (sw1, sw2))
61 5E
>>>
만약 설치가 제대로 되지 않았다면 import에서 부터 에러가 날 것이다.
'IT관련' 카테고리의 다른 글
Tkinter로 만드는 스마트카드 통신 프로그램 - 2 (0) | 2017.07.26 |
---|---|
Tkinter로 만드는 스마트카드 통신 프로그램 - 1 (2) | 2017.07.26 |
__init__.py (0) | 2017.07.24 |
SBH56 간단 사용기 (8) | 2017.07.20 |
Tkinter를 이용한 Python GUI Programming - 2 (5) | 2017.07.11 |