1

c# を使用して、gemalto .net カードのピンを確認して変更しようとしています。しかし、私が確認しようとしたとき、使用して -

byte cla_verify = 0;
byte p2_pinReference = 0x80;
CardCommandAPDU quickVerify = new CardCommandAPDU(cla_verify, 0x20, 0x00, p2_pinReference, CardHex.ToByteArray("FFFFFFFFFFFFFFFF"));
CardResponseAPDU aRespAPDU = aCard.SendCommand(quickVerify);

戻ります- SW 27033 (RSP 6999)

何か案が。私は何をしているのですか?

4

4 に答える 4

1

ステータス ワードの69XX意味: コマンドは許可されていません。

NET Smartcard Framework SDK内で提供されるNETSmartcardFramework.chmを見てきました。CLA、INS、P1、Dan P2、および Lc のどれを使用するかはわかりません。代わりに、PIN 検証は既に PIN クラスにラップされています。

使用できる PIN 値を確認するには

// PIN Class members
// PIN.Verify Method

public void Verify(byte[],int,int);
public void Verify(string);

PIN(byte[],int,int,int)ただし、その前に、コンストラクターまたはを使用して PIN を初期化しPIN(string,int)、PINisBlocked()またはisVerified().

いくつかの興味深い記事とガイド:

于 2013-05-30T18:29:42.583 に答える
1

PIN リファレンスには特定のリファレンスが記載されていますが、P2 の識別子ゼロは「カードはアドレス指定された PIN を認識している」ことを意味することに注意してください。これには、SET モードの Manage Security ENvironment や特定のセキュリティ環境オブジェクトなど、以前に送信された追加のコマンドが必要になる場合があります。特に次の変更参照データについては、ID を明示的に記載することをお勧めします。

于 2013-05-31T06:44:20.027 に答える
0

APDU を送信する PIN を確認したいのですね。ドキュメント IDPrime .NET スマート カード - 統合ガイド (APDU エンコーディングと Hivecodes) の参照。このドキュメントによると、verifyPIN メソッドの APDU (表 16 - V5 の Hivecodes を参照) は次のようになります (ロール USER = 0x01 および PIN=1234 の例)。

80C200001BD800056F00C04B4E7FBD506B00044D53434D010000000431323334

説明:

APDU = APDU ヘッダー + APDU ペイロード

APDU ヘッダーは80C20000 1Bに等しく、ここで:

  • 80C20000 - いつも同じ
  • 1B (16 進数) - 27 (10 進数) は 1 バイトのペイロード長です。

APDU ペイロードは、D8 0005 6F 00C04B4E 7FBD 506B 0004 4D53434D 01 00000004 31323334と等しくなります。

  • D8 - 何も変更しない
  • 0005 - サービス ポート番号 (2 バイト)
  • 6F - 変更なし
  • 00C04B4E - サービス名前空間のハイブコード (4 バイト)
  • 7FBD - サービスタイプのハイブコード (2 バイト)
  • 506B - VeryfiyPin メソッドの 506B である Method Hivecode (ドキュメントを参照)
  • 0004 - サービス名の長さ (0004)
  • 4D53434D - UTF8 でエンコードされたサービス名 (サービス名 - MSCM (4D53434D))
  • 01 - ユーザーの役割 (ユーザー = 0x01、管理者 = 0x02、全員 = 0x03)
  • 00000004 - データサイズ (この場合の PIN の長さは 4 に等しい)
  • 31323334 - PIN の 16 進値 = 1234

PIN が正しい場合は、応答で 9000 を取得する必要があります。

PIN = 12345 の別の例:

80C200001CD800056F00C04B4E7FBD506B00044D53434D01000000053132333435
于 2016-12-08T07:36:32.293 に答える
0

PIN の確認については、こちらで説明しています。あなたの代わりにこのコードを試すことができます。は、私にはよく見えますよ。

于 2016-03-18T06:00:12.420 に答える