Windows에 pyscard 1.9.5 설치

2017. 7. 25. 16:14IT관련

반응형

 

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

http://www.swig.org

이게 뭔가 했더니, 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

http://aka.ms/vcpython27

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에서 부터 에러가 날 것이다.

반응형