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 Requests
mó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?
fuente
Respuestas:
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
fuente