Чтение данных ID-карты в Ubuntu с помощью считывателя смарт-карт EZ100PU (Thai ID Edition)

Нас попросили помочь с настройкой считывателя смарт-карт на компьютере под управлением Windows 7. Но, это заставило задуматься о том, что произойдет, если мы подключим устройство чтения карт к ноутбуку с Ubuntu и сможем ли мы считать содержание с Thai ID card.

Считыватель смарт-карт EZ100PU

Давайте сначала посмотрим на сам считыватель.

Это устройство для чтения смарт-карт FAST ID EZ100PU, соответствующее стандарту ISO7816. Это страница продукта конкретной модели, но поиск EZ100PU показывает только, что производитель — InfoThink Technology, находящийся в Тайване.

Считыватель смарт-карт USB поставляется с компакт-диском, содержащем драйверы для Windows, Linux, Mac OS и Android, а также SDK с демо-программой и примером кода на C ++, Visual Basic .NET и C #. Как мы увидим далее, драйвер Linux не нужен, поскольку он работает «из коробки».

Конструкция платы (RX-N99B-2) очень проста, имеется только основной чип — USB-контроллер смарт-карт Alcor AU9560. А также можно увидеть область, которая взаимодействует с чипом смарт-карты, в нижней левой части печатной платы. 

На другой стороне платы слот для смарт-карт.

Использование считывателя смарт-карт в Ubuntu 18.04

Давайте подключим считыватель к ноутбуку и вставим Thai ID card  (контактная смарт-карта).

Смарт-карта ​​автоматически определяется как EMV Smartcard Reader.

[ 3024.839989] usb 3-2: new full-speed USB device number 3 using xhci_hcd
[ 3025.020314] usb 3-2: New USB device found, idVendor=058f, idProduct=9540, bcdDevice= 1.20
[ 3025.020317] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3025.020320] usb 3-2: Product: EMV Smartcard Reader
[ 3025.020322] usb 3-2: Manufacturer: Generic

Пришлось обратиться к Интернету, и мы нашли пост на Linuxmint, объясняющий, как это сделать, основываясь на более раннем посте об испанских идентификационных картах.

Необходимо установить несколько пакетов (примечание: не все могут понадобиться, но важными являются pcscd и pcsc-tools): 

sudo apt install libccid pcscd pinentry-gtk2 pcsc-tools libpcsclite-dev libreadline-dev coolkey

Теперь запускаем сканирование на считывателе: 

pcsc_scan 
PC/SC device scanner
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: Alcor Micro AU9560 00 00
 
Sat Aug 10 10:23:50 2019
 Reader 0: Alcor Micro AU9560 00 00
  Card state: Card inserted, 
  ATR: 3B 79 96 00 00 54 48 20 4E 49 44 20 31 32
 
ATR: 3B 79 96 00 00 54 48 20 4E 49 44 20 31 32
+ TS = 3B --> Direct Convention
+ T0 = 79, Y(1): 0111, K: 9 (historical bytes)
  TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU
    250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 54 48 20 4E 49 44 20 31 32
  Category indicator byte: 54 (proprietary format)
 
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
 NONE
 
Updating /home/jaufranc/.cache/smartcard_list.txt using http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt
 
Possibly identified card (using /home/jaufranc/.cache/smartcard_list.txt):
3B 79 96 00 00 54 48 20 4E 49 44 20 31 32
 Thai (passport)

Обнаружен Alcor Micro AU9560, и он обнаруживает тайский паспорт, возможно потому, что программа, использованная для создания карты, была неправильно настроена.

В smartcard_list.txt есть несколько других кодов специально для карт Thai ID. Вы можете проверить этот файл, чтобы увидеть все виды поддержки карт. Вот некоторые, для справки, с пометкой «Thai»:

Thai GSM UICC (Телекоммуникации) 
Thai id card (Другое) 
Seven-Eleven Value Card / Умный кошелек — Таиланд (другое) 
Thailand National ID (eID)
Thai National ID Card (eID)
Thai National ID Card (eID)
Thai (паспорт) 
Truemove H Thailand (Телекоммуникации) 
True Money Touch Sim (Таиланд) 
Seven-Eleven Value Card/ Умный кошелек — Таиланд (бесконтактный) 
Тайский паспорт 2010, 2011 
Тайский паспорт 2005

Чтение и декодирование данных с ID Card

Получить доступ к оборудованию можно с помощью считывателя и получить тип карты. Это все хорошо, но было бы хорошо иметь возможность доступа и декодирования данных внутри Thai ID card. Пользователь Github Bouroo написал код для этого на Python и NodeJS.

Сделаем это с помощью скрипта Python. Сначала нам нужно установить некоторые зависимости: 

sudo apt install swig python3-pip libncurses-dev
pip install readers pyscard

Теперь мы можем запустить скрипт, и он будет извлекать данные соответственно: 

python thai-id-card.py 
Available readers:
(0, 'Alcor Micro AU9560 00 00')
Select reader[0]: 0
Using: Alcor Micro AU9560 00 00
ATR: 3B 79 96 00 00 54 48 20 4E 49 44 20 31 32
Select Applet: 61 0A
CID: 
TH Fullname: 
EN Fullname: 
Date of birth: 
Gender: 
Card Issuer: 
Issue Date: 
Expire Date:
Address:

На консоли все отображалось правильно, включая имя и адрес, на тайском языке. Сценарий также сохранит фотографию, хранящуюся в удостоверении личности, используя имя файла <CID> .jpg, где CID — это идентификационный номер карточки.

Выражаем свою благодарность источнику с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments