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