Pin verify command returns 90 00

时间:2015-06-30 13:39:20

标签: smartcard apdu sim-card pin-code

I want to verify PIN1 on smart card and read retry counter. According to ISO 7816-4 page 54 (1), retry counter is stored in 2 LSB of SW2(SW1 should be 63) after verify command, but I have SW1 SW2 = 90 00 in case of correct password:

>> Reset
<<  3b 19 94 80 67 94 08 01 03 02 01 03
>>  ff 00 ff
<<  ff 00 ff
>>  a0 a4 00 00 02
<<  a4
>>  3f 00
<<  9f 16
>>  a0 f2 00 00 16
<<  f2 00 00 63 f4 3f 00 01 00 00 00 00 00 09 33 03 0a 08 00 83 8a 83 8a 90 00
0: pin enabled...
>>  a0 20 00 01 08
<<  20
>>  31 31 31 31 ff ff ff ff
<<  90 00

And 98 04 in case of incorrect PIN1:

>>  a0 20 00 01 08
<<  20
>>  31 31 31 32 ff ff ff ff
<<  98 04

What I missed?

(1) http://www.embedx.com/pdfs/ISO_STD_7816/info_isoiec7816-4%7Bed2.0%7Den.pdf

2 个答案:

答案 0 :(得分:6)

您的智能卡似乎是GSM SIM卡。类字节显然具有MSB集,因此它不遵循ISO 7816.在这种情况下,您应该参考3GPP TS 11.11(可以从this link下载)。

验证CHV命令在9.2.9节,第8.9节和第11.3.1节中描述。

此命令的一些可能返回的状态字是:

  1. '9000':成功进行CHV验证
  2. '9804':CHV验证失败,至少还有一次尝试。
  3. '9840':CHV被阻止
  4. '9808':与CHV状态相矛盾(即验证当前已禁用的PIN)
  5. '91XX':CHV验证成功,但主动命令待定。
  6. 可以在成功选择目录(MF或DF)或发送STATUS命令(INS 'F2')时找到剩余尝试次数。字节19的低半字节包含CHV1 / PIN1的剩余尝试,PUK1的字节20,PIN2的字节21和PUK2的字节22。有关更多详细信息,请参阅第9.2.1节。

    附加说明:

    1. 如果卡是USIM,则VERIFY命令遵循ISO 7816.您可以使用CLA '00'并在此卡中找到63CX状态字。
    2. 可以从SELECT目录字节14中检查PIN1的启用或禁用.b8 = 0:CHV1使能; b8 = 1:禁用CHV1。

答案 1 :(得分:3)

虽然我完全不了解您的转储格式,但请注意以下事项:

  • 仅返回63 Cx,如果在没有数据的情况下发送VERIFY,则尚未授予访问权限。

  • 每个卡操作系统都可以自由地执行此重试计数器响应。

正确的验证(即验证数据验证)显然必须返回90 00以表明验证成功。 98 04是GSM特定的(&#34;专有&#34;)返回代码,您将无法在ISO 7816中找到解释。