私は最近、スマートカードプログラミングに突入しました。Gemalto Prox-SUリーダーでMIFARE 1kメモリブロックにアクセスするには?
私はGemalto Prox-SUリーダーを使用していて、Ubuntu 16.04マシン上にいくつかの空のMIFARE Classic 1kカードを用意しています。 私はGemalto Prox-SUリーダーをインストールしていて、Ludovic Russeau's pyscardを使用してPythonでスクリプトを使ってカードを検出するリーダーを得ました。
私は、APDUをリーダー/カード接続に送信するスクリプトを作成することができました。私はATRを読むことができ、カードのシリアル番号を読むためにGetDataコマンドを送信し、カードメモリブロックを試して読み出すためにカードに複数のAPDUを送信しようとしていました。しかし、LoadKeyコマンドを除いて、それ以外のものは "0x6982:セキュリティステータスが満たされていません"と返されます。
マニュアルに記載されているように、すべての読み取りと書き込みの前に一般認証コマンドを送信するはずですが、コマンドが「セキュリティ状態が不成立」を返しています。私が読んできたことから、これは本当に簡単なはずです。私は何が欠けていますか?認証が成功し、メモリブロックからデータを読み取れるようにスクリプトを設定するにはどうすればよいですか?
あなたは、カードがデフォルト値( "トランスポートキー")FF FF FF FF FF FFでキーAを使用して読み込み可能な場合、次のLOAD KEYコマンドを使用します。これはうまくいきました。私の元々の質問が隠されている限り、これはmtの問題を解決しました。しかし、それは新しい問題がある場合。カードが単独でkeyAで読めるかどうかはどのように分かりますか?後で設定できるものですか? –
@GugaFigueiredo各セクタには2つのキー(AキーとBキー)があります。各セクタ内のブロックは、キーAまたはキーBのいずれかによって読み取り可能および/または書き込み可能に構成することができる。アクセス条件を構成するキーおよびビットは、各セクタの最後のブロック(「セクタ・トレーラ」)に格納される。セクタートレーラーは他のブロックと同様にアクセスできます(ただし、キーの値は読み取りコマンドで返されるデータからマスクされます)。 –