Как вывести список файлов на смарт-карту с pyscard
Я должен прочитать файл со смарт-карты. Карта написана цифровым тахографом, который контролирует движение автомобиля. Я мог бы подключиться к считывателю смарт-карт с помощью psycard ( http://pyscard.sourceforge.net/user-guide.html), но тогда я не знаю, как составить список файлов на карте и как их загрузить. Я копал стандарты ISO, и похоже, что мне нужно использовать стандарт ISO/IEC 7816 и выделенные файлы ( http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_5_basic_organizations.aspx), но я не знаю, как сделать это с pyscard?
Уже есть программы (например, http://en.tachoterminal.net/products/tachoterminal-reader/), которые делают одно и то же, но являются самостоятельными программами. Мне нужно интегрировать эту функциональность в другое программное обеспечение.
Я не знаю, какой протокол использовать. Может кто-нибудь, пожалуйста, помогите мне?
1 ответ
В этом ответе я предполагаю, что вы ссылаетесь на карту водителя тахографа в соответствии с постановлением ECC № 3821/85. В этом случае вы правы в том, что смарт-карта обменивается данными с помощью APDU ISO/IEC 7816-4 и что она предоставляет файловую структуру на основе ISO/IEC 7816-4.
После того, как вы открыли соединение с картой с помощью Pyscard, вы можете позвонить transmit()
метод для этого объекта соединения, чтобы перехватить APDU (также см . блог Людовика Руссо:
connection = reader.createConnection()
connection.connect()
data, sw1, sw2 = connection.transmit(cmd)
Поток связи с картой водителя тахографа будет примерно таким:
ВЫБЕРИТЕ приложение тахографа
00 A4 04 0C 06 FF544143484F
Для этой команды
cmd
было бы:cmd = [ 0x00, 0xA4, 0x04, 0x0C, 0x06, 0xFF, 0x54, 0x41, 0x43, 0x48, 0x4F ]
ВЫБРАТЬ элементарный файл по идентификатору файла (
xxxx
)00 A4 02 0C 02 xxxx
ЧИТАЙТЕ BINARY, чтобы получить данные файла (
zz
байты от смещенияxxyy
)00 B0 xx yy zz
Вы можете найти полную спецификацию протокола карты водителя и структур данных как часть нормативного документа ( здесь).