Проверьте PIN-код бельгийской EID-карты на считывателе с PINPAD

Все мои попытки проверить PIN-код на считывателе PINPAD заканчиваются неудачей, вот моя ситуация:

Настроить

  • Бельгийская EID карта;
  • Vasco DIGIPASS 875, подключенный по Bluetooth;
  • Приложение для Android с использованием SDK от Vasco.

ситуация

Я использовал команду APDU для выбора и чтения файлов, для настройки безопасной среды (MSE: SET), и после многочисленных исследований и объединения различных решений из различной документации я могу заставить читателя запросить мой PIN-код. Но с моей командой псевдо-APDU я получаю ответ 69|C#. Тот же процесс (чтение файлов, установка защищенной среды и проверка PIN-кода) отлично работает на USB-ридере без PINPAD, поэтому я предполагаю, что команда APDU в порядке, но не предшествующая команда псевдо-APDU.

Используемая документация

Документация BEID, спецификация PC/SC часть 10 (2.5.2) и дополнение (2.2.1) и устройства USB Smart Card для главы с 6.1.11.3 по 6.1.11.6.

Что я поняла?

Первая часть должна быть FF C2 01 06 для прямой проверки PIN-кода на считывателе с последующим размером последующих данных. Далее следует структура из PC/SC часть 10, с:

  1. Тайм-аут 1 и 2 (00 по умолчанию);
  2. Формат (должен быть 89 для меня так и должно быть 10001001 для PIN-кода смещения в 1 байт, выравнивание по левому краю и BCD);
  3. Формат блока PIN (должен быть 48 потому что включены 4 бита и 8 байт для блока PIN);
  4. Формат длины PIN (04: Смещение 4 бита в блоке PIN);
  5. Мин. / Макс. Длина PIN: 040C (но так не сработало, 0404 обязательно на работу);
  6. Условие проверки 02 для кнопки ОК;
  7. Количество сообщений: 01 использовать тот в команде;
  8. Язык 0409 для английского;
  9. Сообщение для отображения 00 для ввода PIN-кода;
  10. 000000 потому что это поле не используется;
  11. Длина последней команды APDU для передачи после форматирования с помощью PIN-кода (0000000D это мое предположение);
  12. А затем команда APDU: 0020000108FFFFFFFFFFFFFFFF

Результаты

Я несколько раз менял некоторые значения, в которых я не был так уверен (2, 3, 4, 11 и 12 для уже присутствующих или не дополняющих символов), но безуспешно, иногда просто разные коды результата.

Что я здесь не так делаю?

Спасибо заранее!

1 ответ

После последнего раунда исследований и проверок я обнаружил еще один пример, показывающий мою ошибку: блокировка PIN-кода! Это было 47, потому что это не включало контрольную / эффективную длину ПИН-кода. Поэтому правильный ответ для меня был:

0xFF, 0xC2, 0x01, 0x06, // Base PPDU command
0x20,                   // Length of the data
0x00,                   // timeout
0x00,                   // timeout
0x89,                   // format
0x47,                   // PIN block
0x04,                   // PIN length format
0x04,                   // Min pin size
0x04,                   // Max pin size
0x02,                   // Entry validation condition
0x01,                   // Number of messages to display
0x04, 0x09,             // English
0x00,                   // Message "Enter pin"
0x00, 0x00, 0x00,       // Non significant here
0x00, 0x00, 0x00, 0x0D, // Length of the apdu once formatted
0x00, 0x20, 0x00, 0x01, // APDU command VERIFY
0x08,                   // APDU command Data length
0x20,                   // APDU command Control data + Effective PIN length
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF // APDU command PIN + filler
Другие вопросы по тегам