引脚验证命令 returns 90 00
Pin verify command returns 90 00
我想验证智能卡上的 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
如果 PIN1 不正确,则为 98 04:
>> a0 20 00 01 08
<< 20
>> 31 31 31 32 ff ff ff ff
<< 98 04
我错过了什么?
(1) http://www.embedx.com/pdfs/ISO_STD_7816/info_isoiec7816-4%7Bed2.0%7Den.pdf
虽然我不完全理解您的转储格式,但请注意以下几点:
63 Cx 仅 returned,如果在没有数据的情况下发送 VERIFY 并且 尚未授予访问权限。
每个卡操作系统都可以自由实现此重试计数器响应。
一个正确的验证(即用验证数据验证)显然必须 return 90 00 来表示验证成功。 98 04 是 GSM 特定的 ("proprietary") return 代码,您不会在 ISO 7816 中找到解释。
您的智能卡似乎是 GSM SIM 卡。 class字节明明有MSB设置,所以不遵循ISO 7816。这种情况下,你应该参考3GPP TS 11.11(可以从this link下载)。
Verify CHV 命令在 9.2.9、8.9 和 11.3.1 节中有描述。
此命令可能返回的一些状态字是:
'9000'
: CHV验证成功
'9804'
: CHV 验证失败,至少还有一次尝试。
'9840'
:CHV 被阻止
'9808'
:与 CHV 状态相矛盾(即验证当前禁用的 PIN)
'91XX'
: CHV 验证也成功,但有主动命令挂起。
剩余尝试次数可以在目录(MF 或 DF)成功 SELECT 的响应中找到,或者通过发送 STATUS 命令(INS 'F2'
)。字节 19 的低半字节包含 CHV1/PIN1 的剩余尝试、PUK1 的字节 20、PIN2 的字节 21 和 PUK2 的字节 22。更多详细信息,请参阅第 9.2.1 节。
补充说明:
- 如果卡是 USIM,VERIFY 命令遵循 ISO 7816。您可以使用 CLA
'00'
并在这张卡中找到 63CX
状态字。
- PIN1 启用或禁用可以从 SELECT 目录字节 14 检查。 b8=0:CHV1 启用; b8=1: CHV1 禁用。
我想验证智能卡上的 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
如果 PIN1 不正确,则为 98 04:
>> a0 20 00 01 08
<< 20
>> 31 31 31 32 ff ff ff ff
<< 98 04
我错过了什么?
(1) http://www.embedx.com/pdfs/ISO_STD_7816/info_isoiec7816-4%7Bed2.0%7Den.pdf
虽然我不完全理解您的转储格式,但请注意以下几点:
63 Cx 仅 returned,如果在没有数据的情况下发送 VERIFY 并且 尚未授予访问权限。
每个卡操作系统都可以自由实现此重试计数器响应。
一个正确的验证(即用验证数据验证)显然必须 return 90 00 来表示验证成功。 98 04 是 GSM 特定的 ("proprietary") return 代码,您不会在 ISO 7816 中找到解释。
您的智能卡似乎是 GSM SIM 卡。 class字节明明有MSB设置,所以不遵循ISO 7816。这种情况下,你应该参考3GPP TS 11.11(可以从this link下载)。
Verify CHV 命令在 9.2.9、8.9 和 11.3.1 节中有描述。
此命令可能返回的一些状态字是:
'9000'
: CHV验证成功'9804'
: CHV 验证失败,至少还有一次尝试。'9840'
:CHV 被阻止'9808'
:与 CHV 状态相矛盾(即验证当前禁用的 PIN)'91XX'
: CHV 验证也成功,但有主动命令挂起。
剩余尝试次数可以在目录(MF 或 DF)成功 SELECT 的响应中找到,或者通过发送 STATUS 命令(INS 'F2'
)。字节 19 的低半字节包含 CHV1/PIN1 的剩余尝试、PUK1 的字节 20、PIN2 的字节 21 和 PUK2 的字节 22。更多详细信息,请参阅第 9.2.1 节。
补充说明:
- 如果卡是 USIM,VERIFY 命令遵循 ISO 7816。您可以使用 CLA
'00'
并在这张卡中找到63CX
状态字。 - PIN1 启用或禁用可以从 SELECT 目录字节 14 检查。 b8=0:CHV1 启用; b8=1: CHV1 禁用。