Продолжить: EMV, чтение PAN-кода
Я работаю на C, поэтому у меня нет инструментов Java и всех функций, которые автоматически анализируют ответ команды APDU. Я хочу читать все типы смарт-карт. Мне нужно проанализировать ответ GET PROCESSING OPTIONS и получить AFL (указатель доступа к файлам) каждой карты.
У меня есть три карты с тремя разными ситуациями:
- А) HelloBank:
77 12 82 2 38 0 94 c 10 2 4 1 18 1 1 0 20 1 1 0 90
- Б) PayPal:
77 12 82 2 39 0 94 c 18 1 1 0 20 1 1 0 28 1 3 1 90
- В) PostePay:
80 a 1c 0 8 1 1 0 18 1 2 0 90
Случай А)
У меня есть три разных AFL: 10 2 4 1
, 18 1 1 0
, 20 1 1 0
Поэтому я отправляю 00 B2 SFI P2 00
, где SFI было 10 >> 3 (10 было первым байтом первого AFL), а P2 был SFI ‹< 3 | 4, и таким образом я получил правильный PAN Код моей карты.
Случай B)
У меня есть три разных AFL: 18 1 1 0
, 20 1 1 0
, 28 1 3 1
. Поэтому я отправляю 00 B2 SFI P2 00
, построенный так же, как в случае A, но я получил ответ 6A 83 для каждого AFL.
Случай C) У меня есть два разных AFL: 8 1 1 0
, 18 1 2 0
, но я не могу проанализировать их автоматически, потому что нет такой же TAG из предыдущего ответа. Если я использую эти AFL, это сработает, и я могу получить PAN-код карты.
Как я могу сделать универсальный способ чтения правильного AFL и как я могу сделать правильную команду с этими AFL?