通过使用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是新引脚