2017-04-12 5 views
1

ISO 7816-4 APDUコマンドを使用してMifare DESFireカードのデータを読み書きしようとしています。私はステップを踏んだ:Mifare DESFireカードでデータを読み書きする際のエラー

  1. {00,A4,04,00,07,D2,76,00,00,85,01,00}を使用してアプリケーションを選択します。 私は9100と回答しています。
  2. 次に、{00,A4,00,00,02,3F,00}を使用してファイルを選択すると、応答は9100となります。
  3. 次に、コマンド{00,B0,00,00,03}を使用してファイルを読み取ろうとしましたが、コード6A86でエラーが発生します。

ここで、カード上のデータを読み書きするための正確なコマンドを知りたいと思います。私はまだ読み書きコマンドでP1とP2の意味を理解していないと思う。私はすでに他の多くの組み合わせを試しましたが、私はいつも6A866982などのエラーを受け取ります。

答えて

0

成功したら9000というステータスワードを受け取ったと仮定します。 ISO/IEC 7816-4の基本的な業界間のコマンドAPDUを使用するときに実際に9100を受け取った場合、非常に奇妙なことが起こっているはずです。 91xxステータスワードは、ISO/IEC 7816-4ラップコマンドセット(コマンドAPDUのクラスバイトが0x90に設定されているとき)を使用するときにのみ返されるべきです。

あなたが現在何をすべきかを見てみましょう:このカードは、ISO/IEC 7816-4フレーミングモードであることを確認すると、自動的に選択

 
00 A4 0400 07 D2760000850100 

  1. あなたは私がMIFARE DESFire ISO AID D2760000850100を選択開始MF(マスターファイル、すなわちPICCレベルのアプリケーション)。

  2. あなたは、その後、再び、MF(PICCレベルのアプリケーション)を選択します(!):

     
    00 A4 0000 02 3F00 
    
    だから、あなたが最後に、ステップ4

  3. 後と同じレベルに今ある、あなたは3バイトの開始を読み取ろうREAD BINARY APDU:

     
    00 B0 0000 03 
    
    を使用して現在選択されているファイルからのオフセット0で現在選択されているファイルがMFであるため、そこからバイナリデータを読み取ることはできません。 MFにはデータ部分がありません。その結果、カードは、MF(現在選択されている上位ビットが示すファイル)からオフセット0(P1 | P2 = 0x0000)で読み出すことを通知しようとすると、エラーコード6A86( "間違ったパラメータP1および/またはP2" P1の値がゼロ)は意味をなさない。

あなたは、バイナリデータを読み取ることができる前に、したがって、あなたは、実際のデータの一部が含まれています多分、異なるアプリケーション(専用ファイル、DF)に位置して基本ファイル(EF)を、選択する必要があります。これは、明示的にEF(および、必要であればDF)のSELECTコマンドを送信するか、または最初の読み出しバイナリコマンドのP1の短いファイル識別子を使用して暗黙的にEFを選択することによって行うことができます。後者の場合、P1の上位ビットを1に設定して、P1の残りの部分が短いファイルIDをエンコードすることを示します。どちらの場合でも、読み込みたいファイルとアプリケーションのファイル/アプリケーション識別子を知る必要があります。

+0

マイケルに助けていただきありがとうございます。私はまだこれに新しい疑問を抱いています.MFやEFとはどのように分かっていますか?簡単な読み取り/書き込み操作でEFファイルを選択する方法と短いファイル識別子です。 – Neo

+0

私はMF、DF、EFについて読んだことがありますが、私の問題はまずMFを選択してからDFとEFに進むか、またはEFで読み書き操作を直接行うことができます。また、選択ファイルコマンド{00、A4,00,00,02,3F、01}を実行しているときに、x6A86というエラーが出ます。これは、ファイルが見つからないことを意味します.3F02,3f10,3f11などの他の多くのファイルも使用しようとします。しかし、私はすべてのケースで応答x6A86を取得します。私は選択するファイルcommand.isを実行する前に、アプリケーションやディレクトリを選択していません。 – Neo

関連する問題