そのため、会社が提供する、チップ付きのクレジットカードのようなスマートカードを持っています。このカードは、カードがカードリーダーに挿入された後に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
—
人生は複雑です