Загрузки – esmart
Модули поддержки ESMART Token уже входят в состав всех версий КриптоПро CSP.
Загружайте и устанавливайте данный пакет, только если вы столкнулись с проблемой, для решения которой производитель рекомендует установить данную версию модулей.
Эмулятор виртуальной смарткарты
В процессе изучения вопроса по использованию смарткарт в Linux наткнулся на проект
Virtual Smart Card Architecture
который предоставляет средства для эмуляции ридеров и самих смарткарт в Linux, Windows и MacOS X.
Features
Из всего фреймворка меня в первую очередь интересует функционал по эмуляции виртуальной смарткарты, потому я и подготовил пакет для пары экспериментов.
Установить его можно из моего репозитория
$ sudo aptitude install virtualsmartcard $ sudo service pcscd restart
Для удобства работы со смарткартами нужно установить пакет opensc.
$ sudo aptitude install opensc
И затем проверить, что виртуальные ридеры видны в системе и доступны прикладному софту.
$ opensc-tool --list-readers # Detected readers (pcsc) Nr. Card Features Name 0 No Virtual PCD 00 00 1 No Virtual PCD 00 01 2 No Virtual PCD 00 02 3 No Virtual PCD 00 03 4 No Virtual PCD 00 04 5 No Virtual PCD 00 05 6 No Virtual PCD 00 06 7 No Virtual PCD 00 07 8 No Virtual PCD 00 08 9 No Virtual PCD 00 09 10 No Broadcom Corp 5880 [Contacted SmartCard] (0123456789ABCD) 00 00
В соседнем терминале запустим эмулятор смарткарты стандарта ISO7816 и проверим реакцию на это событие.
$ vicc -t iso7816 02.09.2022 11:24:28 [WARNING] Using default SAM parameters. PIN=1234, Card Nr=1234567890 02.09.2022 11:24:28 [INFO] Connected to virtual PCD at localhost:35963 02.09.2022 11:24:28 [INFO] Power Up 02.09.2022 11:24:29 [INFO] Power Down
Теперь обновим состояние ридеров – по идее сейчас виртуальная карта должна появиться в одном из ридеров.
$ opensc-tool --list-readers # Detected readers (pcsc) Nr. Card Features Name 0 Yes Virtual PCD 00 00 1 No Virtual PCD 00 01 2 No Virtual PCD 00 02 3 No Virtual PCD 00 03 4 No Virtual PCD 00 04 5 No Virtual PCD 00 05 6 No Virtual PCD 00 06 7 No Virtual PCD 00 07 8 No Virtual PCD 00 08 9 No Virtual PCD 00 09 10 No Broadcom Corp 5880 [Contacted SmartCard] (0123456789ABCD) 00 00
Все верно и в первом ридере статус карты сменился с “No” на “Yes”. Теперь попробуем поработать с картой через opensc-explorer.
Запрос информации о корневом файле
OpenSC [3F00]> info 3F00 Dedicated File ID 3F00 File path: 3F00 File size: 65535 bytes ACL for SELECT: N/A ACL for LOCK: N/A ACL for DELETE: NONE ACL for CREATE: NONE ACL for REHABILITATE: NONE ACL for INVALIDATE: NONE ACL for LIST FILES: NONE ACL for CRYPTO: N/A ACL for DELETE SELF: N/A
Генерация 8 случайных чисел в смарткарте
OpenSC [3F00]> random 8 00000000: F9 B3 C9 9D 8F D6 DC 81 ........
Создаем на смарткарте файл 8888/1F00 и загружаем его обратно на диск
$ dd if=/dev/urandom of=test.bin bs=1024 count=1 1 0 записей считано 1 0 записей написано скопировано 1024 байта (1,0 kB), 0,000283354 c, 3,6 MB/c $ opensc-explorer OpenSC [3F00]> mkdir 8888 256 OpenSC [3F00]> cd 8888 OpenSC [3F00/8888]> create 1F00 1024 OpenSC [3F00/8888]> put 1F00 test.bin Total of 1024 bytes written. OpenSC [3F00/8888]> info 1F00 Elementary File ID 1F00 File path: 3F00/8888/1F00 File size: 1024 bytes EF structure: Transparent ACL for READ: N/A ACL for UPDATE: N/A ACL for DELETE: N/A ACL for WRITE: N/A ACL for REHABILITATE: N/A ACL for INVALIDATE: N/A ACL for LIST FILES: N/A ACL for CRYPTO: N/A OpenSC [3F00/8888]> get 1F00 check.bin Total of 1024 bytes read from 1F00 and saved to check.bin. OpenSC [3F00/8888]> rm 1F00 OpenSC [3F00/8888]> cd .. OpenSC [3F00]> rm 8888
Проверим, что содержимое файлов test.bin и check.bin совпадает
$ md5sum test.bin check.bin 804420d7560e82065b74eff561cfb2c8 test.bin 804420d7560e82065b74eff561cfb2c8 check.bin
Несмотря на работу базовых функций инициализировать карту в формат PKCS15
не удастся
.
Если нужна низкоуровневая работа с картой, то можно попробовать инструмент Java Smart Card Explorer.
$ wget --trust-server-names http://sourceforge.net/projects/jsmartcard/files/latest/download $ java -jar JSmartCardExplorer.jar