Autenticación en el sitio web con tarjeta inteligente en python

8

Así que tengo una tarjeta inteligente proporcionada por la compañía que se parece a una tarjeta de crédito con un chip. Esta tarjeta inicia sesión en un sitio web después de insertar la tarjeta en el lector de tarjetas.

Ahora tengo que escribir un programa en Python que pueda leer la tarjeta e iniciar sesión en ese sitio web usando el Requestsmódulo. Traté de averiguar cómo recuperar estos datos de autenticación de la tarjeta usando el script python y luego usar estos datos, pero tengo un éxito parcial. Instalé el 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 )

Hasta ahora puedo transmitir datos y recuperar algunos datos de la tarjeta. Envié el comando 88 en INS (Fuente: ISO 7816) que es para algún tipo de autenticación interna (supongo que estos datos de autenticación se utilizan para iniciar sesión en el sitio web) pero obtengo la siguiente respuesta:

data = []
sw1 = 110
sw2 = 00

No pude encontrar el significado de esta respuesta en ISO 7816. ¿Alguien puede decirme si tengo el enfoque correcto o una pista para seguir adelante desde aquí? En resumen, ¿quiero saber cómo iniciar sesión en el sitio web utilizando el script de Python y la tarjeta inteligente?

Anudocs
fuente
Su respuesta es básicamente 6E00, que significa "Clase no admitida". Mi pregunta es "¿Sabes qué tarjeta es esta?". Puede compartir aquí el ATR de la tarjeta.
Vikky
Aquí está el ATR: 3B D2 18 00 81 31 FE 58 C9 03 16. ¿Pero no sé cómo va a ayudar?
Anudocs
ATR es solo para saber sobre la tarjeta. ¿Tiene alguna guía APDU para la comunicación?
vikky
No. Por cierto, ¿es la forma correcta de autenticar un sitio web?
Anudocs
¿Su tarjeta usa CardOS 5.x? si es así, ¿has mirado esto? github.com/OpenSC/OpenSC/issues
vida es compleja

Respuestas:

0

Básicamente, la respuesta que está obteniendo es esencialmente "6E00", que significa "Clase no admitida", simplemente reemplace el valor "INS" con 0x00 y debería estar bien

bluejayke
fuente