使用 APDU 命令取消阻止代码 PIN:错误"67 00" --> 长度错误



通过使用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

在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
    

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

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

这里3636303535333132是解锁密钥,31323334是新引脚

相关内容

最新更新