1

現在、PIDION BIP-1300 を使用していますが、スマート カード チップの値を取得する方法の例はありますか?

C# と BB_EMV.dll を使用しています...ドキュメントが見つかりません...

これは私が使用しているものの一種です:

EMV emv = new EMV();
byte[] DE_5A;
DE_5A = emv.GetData("DE_5A");

私が受け取るのは、ゼロでいっぱいのバイト配列だけです。

前もって感謝します!

4

1 に答える 1

3

BB_EMV が何であるかは知りませんし、聞いたこともありませんが、スマート カードから EMV データを読み取るのは簡単ではありません。

まず、問題のカードで APDU レベルのアクセスを可能にする適切なマネージド ライブラリが必要です。私はこれを使用します: http://www.smartcard-api.com/index.shtml

それができたら、他のマネージ ライブラリと同じように参照を追加します。キットにはサンプルがあるので、それを使用して詳細を説明するつもりはありません。独自のコードを実行するのは難しくありません。

私はコードを持っていますが、それは私が書いたクライアントの著作権であるため、あなたに渡すことはできません.

カードにコマンドを送信する準備が整ったら、それが標準の EMV 構造をサポートするカードである場合、最初に行うことは PSE を選択することです。通常、これを行うには 2 つの方法があります。

1) AID 選択を使用する

受け入れる準備ができている AID (アプリケーション ID) のリストから、次のコマンドをカードに送信します。

0x00、0xA4、0x04、0x00

これに続いて、選択する AID を入力します。VISA デビットの場合、これは通常

0xA0、0x00、0x00、0x00、0x03、0x10、0x10

これは、0x07 (データ長) が続くデータ ブロックとして上記の APDU データに続きます。

あなたが返すべきものはどちらかです

0x9000 または 0x6100 (61 コードを取得した場合は、ここに書いている範囲を超えて、変更されたパラメーターで要求をやり直す必要があることを意味します)

SW1 と SW2 (カード レジスタ) で 0x9000 を取得した場合は、その AID が正常に選択されており、EMV 呼び出しを行う準備ができています。

2) DDF 名を使用して、必要な支払いアプリケーションを選択します。基本的には、標準のカード選択コマンドを使用して、接触型のチップとピンの場合は「1PAY.SYS.DDF01」を選択し、非接触型の場合は「2PAY.SYS.DDF02」を選択します。 PPSE を使用した選択として知られています。

支払いアプリを選択したら、カードから処理オプションを読み取る必要があります。これにより、利用可能なものとどこを見るべきかについての情報が得られます.

これは、次のような読み取り GPO コマンドを発行することによって行われます。

0x80、0xA8、0x00、0x00、0x83、0x00

これにより、詳細を解析する必要がある TLV 構造が返されます。

TLV は非常に単純な概念です。データ ストリームは 3 つのグループに分けられます。

鬼ごっこ

長さ

価値

したがって、TLV、

TLV タグは 1 ~ 3 バイトの可変長にすることができますが、通常は 2 バイトを超えることはありません。0x1F で AND 処理された最初のバイトが 31 より大きい場合 (つまり、ビット 6 または 7 が設定されている場合)、16 ビットのタグがあり、この場合、受信したバイトを左に 8 ビットシフトする必要があります。シーケンスに次のバイトを追加します。

次のバイトと同様に、それを 128 で AND すると 128 になり、1 ~ 15 ビットの 2 バイトの長さになります。TAG と長さを取得すると、次の長さの残りのバイトがペイロードになります。

そのペイロードは入れ子にすることができます。実際、TLV 構造内に TLV 構造が見つかる可能性が最も高いため、適切な再帰パーサーを作成する必要があります。

GPO オブジェクトからのデータを解析した後、これを使用して実際のカード データを見つけることができます。これは、PAN や track2 の同等のデータなどの読み取りを開始する場所です。それらはすべて 100% 同一です。ほとんどのカードにはカスタム データ領域があります。また、PIN および CVV 番号はカードから直接利用できないことに注意してください。代わりに、ほとんどの場合、暗号化された PIN または CVV ブロックが存在することがわかります。これは、に送信されるように設計されています。カードからの適切な証明書と一緒に発行すると、発行者は入力された PIN が正しかったかどうかを報告します。

一部のカードはオフライン PIN 検証を行うことができますが、wolfgang ランケルのサイトには、主に GSM Sim カードで利用可能なさまざまな標準機能とデータ呼び出しのいくつかに関する優れた情報が満載ですが、彼は EMV もカバーしています。彼のサイトはここにあります。

http://www.wrankl.de/

このテーマには、私がここで説明した以上の膨大な量があります。これは氷山の一角にすぎませんが、6 か月以上前にこれを投稿したので、今までに自分である程度の進歩を遂げた可能性があると思います。そうでない場合は、これが役立つことを願っています。

于 2012-06-14T22:34:29.087 に答える