Authentifizierung auf der Website mit Smartcard in Python

8

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 RequestsModul 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.

Anudocs
quelle
Ihre Antwort lautet im Grunde 6E00, was "Klasse nicht unterstützt" bedeutet. Meine Frage ist "Weißt du, welche Karte das ist?". Sie können hier die ATR der Karte teilen.
Vikky
Hier ist die ATR: 3B D2 18 00 81 31 FE 58 C9 03 16. Aber ich weiß nicht, wie es helfen wird?
Anudocs
ATR ist nur über die Karte zu wissen. Haben Sie einen APDU-Leitfaden für die Kommunikation?
Vikky
Übrigens, ist es der richtige Weg, eine Webiste zu authentifizieren?
Anudocs
Verwendet Ihre Karte CardOS 5.x? Wenn ja, haben Sie sich das angesehen? github.com/OpenSC/OpenSC/issues
Leben ist komplex

Antworten:

0

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

Bluejayke
quelle