引脚验证命令返回90 00

use*_*125 3 apdu smartcard sim-card pin-code

我想验证智能卡上的PIN1并读取重试计数器.根据ISO 7816-4第54页(1),在验证命令后,重试计数器存储在SW2的2 LSB(SW1应为63)中,但如果密码正确,则我有SW1 SW2 = 90 00:

>> 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
Run Code Online (Sandbox Code Playgroud)

如果PIN1不正确,则为98 04:

>>  a0 20 00 01 08
<<  20
>>  31 31 31 32 ff ff ff ff
<<  98 04
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

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

Dav*_*vid 6

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

Verify 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验证,但有主动命令待定.

可以在成功选择目录(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.