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

时间:2014-10-21 06:37:47

标签: authentication smartcard apdu pin-code

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

2 个答案:

答案 0 :(得分: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
    

答案 1 :(得分: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是新引脚