Аутентификация на сайте с использованием смарт-карты в python - PullRequest
8 голосов
/ 07 февраля 2020

Итак, у меня есть смарт-карта, предоставленная компанией, которая выглядит как кредитная карта с чипом. Эта карта регистрируется на веб-сайте после того, как карта вставлена ​​в устройство чтения карт.

Теперь мне нужно написать программу на python, которая может считывать карту и входить на этот веб-сайт с помощью модуля Requests. Я попытался выяснить, как получить эти данные аутентификации с карты, используя скрипт python, а затем использовать эти данные, но я частично успешен. Я установил pyscard:

from smartcard.System import readers
from smartcard.util import toHexString

r=readers()
print(r)

connection = r[0].createConnection()
connection.connect()
SELECT = [0xA0, 0x88, 0x00, 0x00] # CLA, INS, P1, P2
DF_TELECOM = [ 0x02, 0x7F, 0x10]  # Lc, Data, Le
data, sw1, sw2 = connection.transmit( SELECT + DF_TELECOM )

. Пока я могу передавать данные и получать некоторые данные с карты. Я отправил команду 88 в INS (Источник: ISO 7816) , которая предназначена для какой-то внутренней аутентификации (я предполагаю, что эти данные аутентификации используются для входа на веб-сайт), но я получаю ответ ниже:

data = []
sw1 = 110
sw2 = 00

Я не смог найти значение этого ответа в ISO 7816. Может кто-нибудь сказать мне, есть ли у меня правильный подход или намек, чтобы продолжить дальше? Короче говоря, я хочу знать, как войти на сайт, используя скрипт python и смарт-карту?

1 Ответ

0 голосов
/ 17 февраля 2020

По сути, вы получаете ответ «6E00», что означает «Класс не поддерживается», просто замените значение «INS» на 0x00, и все будет в порядке

...