2012-03-01 18 views
5

カードIDの7バイトを取得するAPDUコマンドは何ですか? ISO14443層のT = CL(ISO7816)pritocolを使用します。カードを検出すると、私は4バイトのカードIDしか見ることができません。 カードIDを取得するためのAPDUコマンドが検索されました。たとえば その:
0xFF, 0xCA, 0x00, 0x00, 0x00
しかしthouseコマンドの結果は次のとおりです:APDUの回答の仕様上それはカードIDを取得するAPDUコマンド

を「クラスサポートされていない」ことを伝える6E 00、そして、私はそのAPDUコマンドとしてあり得ることを、見つけます
0x00, 0xCA, 0x00, 0x00, 0x00
このコマンドリターン6A 88
6A XXから "間違ったパラメータ(単数または複数)P1-P2"88 - あなたがそれについて考える何

「を参照するデータが見つかりませんか」?

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

p.s. CLA, INS, P1, P2, LenData, Data
normalyその他の私のコマンド作業(例えばsellect apletなどとそれに取り組む)、唯一のカードID

答えて

1

0xCAは、GET DATAコマンドでの取得で問題:としてすべてのコマンド。 P1-P2にTLVタグを指定する必要があります。

ISO 7816パート6「交換用Interindustryデータ要素」これらのタグのリストを持っていますが、それらのどれも「カードID」に明確に対応していません。カードでサポートされているデータ要素を調べるには、P2のすべての値を0x00、0x5F、または0x7Fに等しいP1で試すことをお勧めします。

+0

コマンド{0x00、0xCA、0x00、0x5F、0x00}または{0x00、0xCA、0x00、0x7F、0x00}がエラーを返す6A 88 –

+0

はい、もちろんです。 P1の0x00、0x5F、0x7Fの3つの値と共に、0x00から0xFFまでのP2の*すべての*値を試してください。それは合計で768の組み合わせです。 – TonyK

13

答えは間違っています。これは、ここではISO 7816コマンドについてではなく、PC/SC APIの内部コマンドについて述べているからです。

APDU「0xFFの0xCAは0x00 0x00から0x00が」実際には正しいと私は7バイトの答えを得るためにどのカードを持っています。このUIDは無線プロトコルの一部であるため、これは非接触(RFID)カードでのみ機能することに注意してください。いくつかのチップは、電源投入後に新しいランダムUIDを返すことに注意してください。これは、例えば、私のパスポートチップと私のドイツの国民識別カードとカード保有者の追跡を防ぐための対策に当てはまります。理論的には、そのようなランダムUIDは0x08で始まるが、必ずしもそうではない。

UIDはプロトコルの「内部」値であるため、問題のAPDUはカードに送信されませんが、カードリーダードライバからUIDを取得するための(PC/SCインターフェイスの)内部コマンドのみです。 CLA 0xFFは、通常「プロトコルパラメータ選択」(PPS)用に予約されているため、通常は通常の使用ではありません。 PC/SCはこのCLAを内部コマンドに悪用します。

コマンドここでは、パート3で指定されたコマンド、PC/SC仕様のセクション3.2.2.1.3「データの取得」PC/SCの内部です。ここでは、P1とP2には特別な定義済みの意味があるため、異なる値を試しても意味がありません。規格では、UIDを取得するためのP1 = 0、P2 = 0、「CRCなしのISO 14443 AカードのATSからのすべての履歴バイト」についてはP1 = 1、P2 = 0が定義されています。他の値はサポートされていません。

興味深いことに答え0x6A 0x88は、標準で定義されていません。 0x6a 0x81は "機能がサポートされていない"という意味で、UIDを持たないカード(標準では7816-10接触カードを指す)です。定義された2つの答え(0x62 0x82と0x6C 0xXX)は要求された答えの長さと実際のデータの量との間の不一致を定義し、ここでは発生しません。要求の最後のバイトに0を指定するだけで。

なぜ私は知らない投稿者のために働いていないのですか?私にとってそれは動作し、いくつかのカードは4バイトを返し、他は7バイトを返します。

は、ここでは、PC/SCの標準を参照してください。特に、第3部:http://www.pcscworkgroup.com/specifications/specdownload.php

+0

このドキュメントでは、ランダムUIDを含むRFIDカードのUID、および他の固有でないUIDを判別する方法についてさらに詳しく説明します。http://www.nxp.com/documents/application_note/AN10927.pdf – Michael

0

を私はあなたの2番目のコマンドが正しいと思いますが、カードはアプリケーションIDにプログラムされていません。

BasicCardのマニュアルでは、「BasicCardにアプリケーションIDが設定されていない場合、ビルトインコマンドGET APPLICATION IDがこのエラーコードを返します」と記載されています。

関連する問題