2016-03-30 2 views
-1

私はSPR332ピンパッドリーダーを持っています。私は銀行カードのピンを確認するjavaプログラムを書く必要があります。Javaを使用してピンを確認するにはどうすればいいですか?6a86

だからこれは私のPINverifyStructureです:

bTimeOut = 0х00 
bTimeOut2 = 0х00 
bmFormatString = 0x82 
bmPINBlockString = 0x47 
bmPINLengthFormat = 0x04 
wPINMaxExtraDigitMax = 0x0c 
wPINMaxExtraDigitMin = 0x00 
bEntryValidationCondition = 0x02 
bNumberMessage = 0x01 
wLangId = 0x09 0x04 
bMsgIndex = 0x00 
bTeoPrologue = 0x00 0x00 0x00 
ulDataLength = apduLength 0x00 0x00 0x00 

はAPDUコマンドを確認している。この後

CLA = 0x00 
INS = 0x20 
P1 = 0x00 
P2 = 0x00 
LC = 0x08 
0x20 
0xff 
0xff 
0xff 
0xff 
0xff 
0xff 
0xff 

私はPINPAD上のピンを入力して、それから私はAPDUレスポンス6a86を受けます。 APDU応答仕様では、「P1またはP2パラメータが正しくありません」という意味です。

お願いします、私のコマンドに間違いがありますか?

私は応答が6.5.12はコマンド応答のAPDUを検証し、EMV Book 3を参照してください同じ6a86

+0

1)ダイレクトモードで動作するVerifyコマンドを取得します。 2)リーダーのマニュアルを注意深く読んで、そのAPDUをラップする方法を読んで、入力されたPINを記入してください。 (これはVERIFYコマンドかもしれませんが、まったく異なるものかもしれません)。 3)その後、リーダーによるAPDU変更を達成しようとします。 – guidot

+0

1)ダイレクトモードは同じ応答を返します。** 6a81 ** 2)Identive SPR332ピンパッドのマニュアルはありません。Google検索は不完全でした。 –

答えて

0

私はついに、なぜレスポンスが6a81であるのかを知りました。

私はEMVカードを持っていたので、VERIFYコマンドを特定の順序で呼び出す必要がありました(SELECT FILE、GET PROCESSING OPTIONS、READ RECORD、GET DATAの後)。

ここで私は9000です。Thx all

0

で、0x01のにP2を変更しました。 PlaintextPin又は0x88 - - EncipheredPin

P2はは0x80であるべきです。あなたの場合 - 0x80。

+0

0x80に変更しました。 " 私のカードリーダーが機能を確認していないということですか? –

+0

コマンドplaintext次のように、smoldを確認してください。00 20 00 80 08 24 12 34 FF FF FF FF FF。フィールドN PINの長さを確認してください。 6A81はカードが以前にブロックされたことを意味することがあります。あなたは応答のコマンドの完全なシーケンスを提供していただけますか? –

+0

VERIFY_PIN_START [00:00:82:47:04:0c:00:02:01:09:04:00:00:00:0d:00:00:00:20:00:80: 08:20:FF:FF:FF:FF:FF:FF:FF] \t GET_KEY_PRESSED:0x2Bを(ユーザーが有効なキー0-9に入った) \t GET_KEY_PRESSED:0x2Bを(ユーザーが有効なキー0-9に入った) \t \t GET_KEY_PRESSED:0x2Bを(ユーザーが有効なキー0-9に入った) \t \t GET_KEY_PRESSED:0x2Bを(ユーザーが有効なキー0-9に入った) \t \t GET_KEY_PRESSED:0x0Dの(ユーザーが確認された) \t \t VERIFY_PIN_FINISH \t \t応答[6a:81] –

関連する問題