Authentication 使用APDU命令解除锁定代码PIN:错误";6700“--&燃气轮机;错误长度

Authentication 使用APDU命令解除锁定代码PIN:错误";6700“--&燃气轮机;错误长度,authentication,smartcard,apdu,pin-code,Authentication,Smartcard,Apdu,Pin Code,通过使用WinsCard.dll,我想使用APDU命令重置PIN码,并在智能卡中设置新的PIN码。但是当我启动这些命令时,我得到了错误“6700”(“错误的长度”) 我的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 car

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

我的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的重置重试计数器命令(INS=0x2C)意味着您希望重置重试计数器,而无需设置新的参考数据(即新的PIN)。如果您想在重置重试计数器时设置新的参考数据(新PIN),您可以尝试(取决于您的卡支持什么)

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

  • P1=0x02(仅发送新的参考数据):


    • 您的长度应为0x10。请参考以下示例: A0 2C 00 01 10 3636303535333132 31323334 FFFFFF

      命令:A02C000110 输入数据:36 36 30 35 33 31 32 33 34 FF FF FF
      输出数据:无 现状:9万


      这里36363035333132是解锁密钥,31323334是新pin

      我已经尝试过了,它工作得非常好!非常感谢您的支持!这是怎么回事?我尝试了你所有的命令,它们都返回'6A86'或'6A88'。根据NIST规范第3.2.3节,您应该将P2设置为'80'否@codenamezero参数P2是管脚参考号,因此该值(就像P1中指定的格式和管脚/PUK字段的大小一样)可能会因实际实现和使用的管脚而异。只是这些特定参数对OP有效并不意味着它对所有卡/应用程序都有效。@MichaelRoland啊。。因此,OP尝试处理的卡不是ISO7816…@codenamezero它当然是,但ISO标准是一个完整的框架,卡通常只支持有限的子集。对于P2的值,它甚至有点复杂,因为P2的值是特定于应用程序的。
      00 2C 00 01 0C 36 35 32 34 39 38 37 36 31 32 33 34
      
      00 2C 02 01 04 31 32 33 34