2017-03-24 4 views
-1

スマートカードのPINを確認するには、あなたの助けが必要です。私はPythonpyscardを使用しています。 APDUコマンドを使用する必要があり、ScardTransmit()を使用して送信する必要があることを理解しましたが、使用するAPDUが見つかりません。例えば:(PIN = 123456となる)単なる 6A 88戻りますスマートカードのPINをPythonで確認する方法は?

SCardTransmit(hcard,dwActiveProtocol, 
       [0x00, 0x20, 0x00, 0x01, 0x06, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x00]) 

-

私は思っていたが見つかりません参照されるデータを:commandsに関するいくつかのヒントを取得する方法があります特定のスマートカードを使用してATRを見るとどうなりますか? INSフィールドのコマンド "20"(APDUはCLA、INS P1、P2、DATAで構成されています)は、PINを検証するためにISOが定義するものですが、何か間違っているかどうかを理解する方法は?

ありがとうございました。

P.S .: P2 = "00"の場合、6A 83、レコードが見つかりません。

答えて

0

あなたのAPDUはあなたのスマートカードアプリケーション(あらかじめ選択したDF)にID 1(あなたがP2で与えたもの)のPINを持っていれば正しいでしょう。最上位ビットを設定すると、MFのPIN 1を検索するようコマンドに指示できます。

+0

待ち:理解する方法がありますスマートカードに送信するコマンドですか?多分ATRを読んでいるのだろうか?私は多くの異なるタイプのスマートカードに対処しなければならないでしょう。私は、2つの "単純な"ことを行うことができる "一般的な"ツールを開発したいと思います:PAN(シリアル番号)を読み取り、ピンを確認してください。 – Bya

+0

#ALe、DFとは何か、それをどのように選択するのか、そしてMFは何ですか?私は本当にスマートカードに関する初心者です...私はforループで正しいコードを推測しようとしましたが、うまくいきませんでした。私が必要とするのは、ピンを確認してPANを取得するために、Pythonで一般的なアプリケーションのようなものを構築することです。どこに何を勉強すればいいのか、本当に感謝しています... – Bya

+0

@Bya:No ATRは決して十分ではありません(しかし、弱いヒントを与えるかもしれません)。出発点はISO 7816、パート4だけでなく、[スマートカード]の初心者の質問のほとんどです。 – guidot

0

どのPINが存在するか(まったくありません)、DFが存在するファイルシステムを持つカードの場合、カードのパーソナライゼーションによって定義されます。それ以上の詳細がなければ、答えは非常に一般的でなければならない。異なるP2値を試してください(0x1Fまで)。

一方、PINが確認されるとすぐに、カードのパーソナライゼーションに関する詳細な情報がなければ、それ以上の進歩は見込めませんので、今すぐ取得する可能性があります。

+0

ありがとうございます。私は可能なすべてのP2値を 'for range in(255): hresult、response = SCardTransmit(hcard、dwActiveProtocol、 [0x00、0x20、0x00、int(hex(l)、16)、0x06、0x31、0x37 、0x30、0x32、0x37、0x35、0x02])しかし、何も働かなかった。私は自分のJavaアプレットからアクセスできるので、カードにPINがあることを知っています。 – Bya

+0

lを16進数に変換してから整数に戻しますか?あなたのカードはゼロとは異なるCLAバイトを使用するかもしれません。 – guidot

+0

'int(hex(l)、16)'はintクラスのオブジェクトに変換されますが、基数16になります。@ guidot、ありがとう、あなたに感謝します。スマートカードとの通信方法を理解するために、各カードに固有のユーザーマニュアル...) – Bya

1

これは助けること...それはGSMカードに来るとき、私たちは常には8バイトのデータ長を使用し VERIFY_CHV = [0xA0を、0x20に、0x00で、0x01の、0x08に]

PIN、すなわち次のデータは実際のピンの長さに応じて0xFFで埋められます。 すなわち、もしピン= 123456次にLJUST_PIN_HEX = 0x31、0x32の、0x33の、0x34の、0x35の0x36、0xFFで、0xFFで】

次いであろうAPDU VERIFY_CHV + LJUST_PIN_HEX

関連する問題