Então, eu tenho um cartão inteligente fornecido pela empresa que parece um cartão de crédito com um chip. Este cartão efetua login em um site após o cartão ser inserido no leitor de cartões.
Agora eu tenho que escrever um programa em python que possa ler o cartão e fazer login nesse site usando o Requests
módulo Tentei descobrir como recuperar esses dados de autenticação do cartão usando o script python e, em seguida, usar esses dados, mas tenho sucesso parcial. Eu instalei o 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 )
Até agora, sou capaz de transmitir dados e recuperar alguns dados do cartão. Enviei o comando 88 no INS (fonte: ISO 7816), que é para algum tipo de autenticação interna (suponho que esses dados de autenticação sejam usados para fazer login no site), mas recebo a resposta abaixo:
data = []
sw1 = 110
sw2 = 00
Não consegui encontrar o significado dessa resposta na ISO 7816. Alguém pode me dizer se tenho a abordagem correta ou sugestão para prosseguir daqui? Em suma, quero saber como fazer login no site usando script python e cartão inteligente?
fonte
Respostas:
Basicamente, a resposta que você está recebendo é essencialmente "6E00", que significa "Classe não suportada", basta substituir o valor "INS" por 0x00 e você deve ficar bem
fonte