Pythonでスマートカードを使用するWebサイトでの認証


8

そのため、会社が提供する、チップ付きのクレジットカードのようなスマートカードを持っています。このカードは、カードがカードリーダーに挿入された後にWebサイトにログインします。

Requestsモジュールを使用してカードを読み取り、そのWebサイトにログインできるプログラムをPythonで作成する必要があります。この認証データをpythonスクリプトを使用してカードから取得し、このデータを使用する方法を見つけようとしましたが、部分的に成功しました。私はインストールしました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 )

これまでのところ、データを送信し、カードから一部のデータを取得することができます。INSでコマンド88を送信しました(出典:ISO 7816)。これはある種の内部認証用です(この認証データはWebサイトへのログインに使用されると想定しています)が、以下の応答が返されます。

data = []
sw1 = 110
sw2 = 00

ISO 7816でこの応答の意味を見つけることができませんでした。ここから先に進むための適切なアプローチまたはヒントがあるかどうか誰かに教えてもらえますか?つまり、Pythonスクリプトとスマートカードを使用してWebサイトにログインする方法を知りたいですか?


あなたの応答は基本的に「クラスはサポートされていません」を意味する6E00です。私の質問は「これがどのカードか知っていますか?」です。ここでカードのATRを共有できます。
vikky

ATRは次のとおりです。3BD2 18 00 81 31 FE 58 C9 03 16。しかし、それがどのように役立つかわかりませんか?
Anudocs

ATRはカードについて知っているだけです。通信用のAPDUガイドはありますか。
vikky

いいえ。BTWはwebisteを認証する正しい方法ですか?
Anudocs

カードはCardOS 5.xを使用していますか?もしそうなら、あなたはこれを見ましたか?github.com/OpenSC/OpenSC/issues
人生は複雑です

回答:


0

基本的に、得られる応答は本質的に「クラスがサポートされていない」ことを意味する「6E00」であり、「INS」値を0x00に置き換えるだけで問題ありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.