Ich habe also eine Smartcard von der Firma bereitgestellt, die aussieht wie eine Kreditkarte mit einem Chip. Diese Karte meldet sich auf einer Website an, nachdem die Karte in den Kartenleser eingelegt wurde.
Jetzt muss ich ein Programm in Python schreiben, das die Karte lesen und sich mit dem Requests
Modul auf dieser Website anmelden kann . Ich habe versucht herauszufinden, wie diese Authentifizierungsdaten mithilfe eines Python-Skripts von der Karte abgerufen und dann verwendet werden können, bin aber teilweise erfolgreich. Ich habe Folgendes installiert 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 )
Bisher bin ich in der Lage, Daten zu übertragen und einige Daten von der Karte abzurufen. Ich habe den Befehl 88 in INS (Quelle: ISO 7816) gesendet, der für eine Art interne Authentifizierung vorgesehen ist (ich gehe davon aus, dass diese Authentifizierungsdaten zum Anmelden auf der Website verwendet werden), erhalte jedoch die folgende Antwort:
data = []
sw1 = 110
sw2 = 00
Ich konnte die Bedeutung dieser Antwort in ISO 7816 nicht finden. Kann mir jemand sagen, ob ich den richtigen Ansatz oder Hinweis habe, um weiter von hier fortzufahren? Kurz gesagt, ich möchte wissen, wie man sich mit Python-Skript und Smartcard auf der Website anmeldet.
quelle
Antworten:
Grundsätzlich lautet die Antwort "6E00", was "Klasse nicht unterstützt" bedeutet. Ersetzen Sie einfach den Wert "INS" durch 0x00, und es sollte Ihnen gut gehen
quelle