Команда проверки PIN-кода возвращает 90 00
Я хочу проверить PIN1 на смарт-карте и прочитать счетчик повторов. Согласно ISO 7816-4, стр. 54 (1), счетчик повторов сохраняется в 2 младших бита SW2(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
И 98 04 в случае неправильного PIN1:
>> 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
2 ответа
Ваша смарт-карта выглядит как GSM SIM-карта. У байта класса явно установлен MSB, поэтому он не соответствует ISO 7816. В этом случае вам следует обратиться к 3GPP TS 11.11 (можно загрузить по этой ссылке).
Команда Verify CHV описана в разделах 9.2.9, 8.9 и 11.3.1.
Вот некоторые из возможных возвращенных слов состояния для этой команды:
'9000'
: успешная проверка CHV'9804'
: неудачная проверка CHV, оставлена хотя бы одна попытка.'9840'
: CHV заблокирован'9808'
: противоречит статусу CHV (т. е. проверяет PIN-код, который в настоящее время отключен)'91XX'
: также успешная проверка CHV, но есть активная команда в ожидании.
Количество оставшихся попыток может быть найдено в ответ на успешный ВЫБОР каталога (MF или DF) или путем отправки команды STATUS (INS). 'F2'
). Нижний откусок байта 19 содержит оставшиеся попытки для CHV1/PIN1, байт 20 для PUK1, байт 21 для PIN2 и байт 22 для PUK2. Для получения более подробной информации см. Раздел 9.2.1.
Дополнительные примечания:
- Если карта является USIM, команда VERIFY соответствует ISO 7816. Вы можете использовать CLA
'00'
и найти63CX
статусное слово в этой карточке. - Включенный или отключенный PIN1 может быть проверен из байта каталога SELECT 14. b8=0: CHV1 включен; b8=1: CHV1 отключен.
Хотя я не совсем понимаю ваш формат дампа, обратите внимание на следующее:
Возвращается только 63 Cx, если VERIFY отправлено без данных и право доступа еще не предоставлено.
Каждая операционная система карты может свободно реализовывать этот ответ счетчика повторов.
Правильная проверка (т. Е. ПРОВЕРКА с данными проверки), очевидно, должна возвращать 90 00, чтобы указать, что проверка прошла успешно. 98 04 - это код возврата, специфичный для GSM ("проприетарный"), который вы не найдете в ISO 7816.