1

通过使用 WinsCard.dll,我想使用 APDU 命令重置 PIN 码并在智能卡中设置一个新的。但是当我启动这些命令时,我得到错误“67 00”(“错误长度”)。

我的 APDU 命令:

// First command, I verify the code PUK (return "90 00")
00 20 00 02 08 36 35 32 34 39 38 37 36  
// Second command, I try to set a new code PIN into the card
00 2C 03 01 0C 36 35 32 34 39 38 37 36 31 32 33 34

对于第二个命令:

36 35 32 34 39 38 37 36 -> code PUK
31 32 33 34 -> new code PIN

经过一番搜索,我发现的唯一解释是“Lc”参数错误。但是,就我而言,它等于“0C”,我的数据长度是“0C”。

所以,我不明白我的错误在哪里。

你有想法吗?

非常感谢您的帮助!

注意:如果我在不输入新 PIN 的情况下重置密码 PIN(它会恢复以前的密码 PIN),它可以正常工作:

00 20 00 02 08 31 38 39 30 31 36 39 32
// Reset code PIN
00 2C 03 01 00
4

2 回答 2

1

在 P1 = 0x03 的情况下使用 RESET RETRY COUNTER 命令 (INS = 0x2C) 意味着您要在不设置新参考数据(即新 PIN)的情况下重置重试计数器。如果您想在重置重试计数器时设置新的参考数据(新的 PIN),您可以尝试(取决于您的卡支持的内容)

  • P1 = 0x00(对于您尝试的格式):

    00 2C 00 01 0C 36 35 32 34 39 38 37 36 31 32 33 34
    
  • P1 = 0x02(只发送新的参考数据):

    00 2C 02 01 04 31 32 33 34
    
于 2014-10-21T09:33:24.993 回答
0

你的长度应该是 0x10。请参考以下示例:A0 2C 00 01 10 3636303535333132 31323334 FFFFFFFF

命令:A0 2C 00 01 10 输入数据:36 36 30 35 35 33 31 32 31 32 33 34 FF FF FF FF
输出数据:无 状态:90 00

这里 3636303535333132 是解锁密钥,31323334 是新密码

于 2018-07-17T19:24:56.003 回答