Нас попросили помочь с настройкой считывателя смарт-карт на компьютере под управлением 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.
1 2 3 4 5 |
[ 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):
1 |
sudo apt install libccid pcscd pinentry-gtk2 pcsc-tools libpcsclite-dev libreadline-dev coolkey |
Теперь запускаем сканирование на считывателе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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. Сначала нам нужно установить некоторые зависимости:
1 2 |
sudo apt install swig python3-pip libncurses-dev pip install readers pyscard |
Теперь мы можем запустить скрипт, и он будет извлекать данные соответственно:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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.
Оригинал статьи вы можете прочитать здесь.