Разблокировать код PIN с помощью команд APDU: ошибка "67 00" -> Неверная длина
Используя WinsCard.dll, я хочу использовать команды APDU для сброса PIN-кода и установки нового в смарт-карту. Но когда я запускаю эти команды, я получаю ошибку "67 00" ("Неверная длина").
Мои команды 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
2 ответа
Использование команды RESET RETRY COUNTER (INS = 0x2C) с P1 = 0x03 означает, что вы хотите сбросить счетчик повторов без установки новых опорных данных (то есть нового PIN-кода). Если вы хотите установить новые справочные данные (новый PIN-код) при сбросе счетчика повторов, вы можете попробовать (в зависимости от того, что поддерживает ваша карта)
P1 = 0x00 (для формата, который вы пробовали):
00 2C 00 01 0C 36 35 32 34 39 38 37 36 31 32 33 34
P1 = 0x02 (отправляются только новые справочные данные):
00 2C 02 01 04 31 32 33 34
Ваша длина должна быть 0x10. Пожалуйста, смотрите ниже пример: A0 2C 00 01 10 3636303535333132 31323334 FFFFFFFF
Команда: A0 2C 00 01 10 Входные данные: 36 36 30 35 35 33 31 32 31 32 33 34 FF FF FF FF
Выходные данные: нет Статус: 90 00
здесь 3636303535333132 - ключ разблокировки, а 31323334 - новый пин