EMV Pidion BIP 1300 - PullRequest
       16

EMV Pidion BIP 1300

1 голос
/ 25 октября 2011

В настоящее время я работаю с PIDION BIP-1300, у кого-нибудь есть примеры получения значений чипа смарт-карты?

Я использую C # и BB_EMV.dll ... Я могу 'не могу найти никакой документации ...

Это то, что я использую:

EMV emv = new EMV();
byte[] DE_5A;
DE_5A = emv.GetData("DE_5A");

Все, что я получаю, это массив байтов, полный нулей.

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

1 Ответ

3 голосов
/ 15 июня 2012

хорошо, я не знаю, что такое BB_EMV, и никогда о нем не слышал, но считывать данные EMV со смарт-карты непросто, я вам сейчас об этом скажу.

Первое, что вам нужнохорошая управляемая библиотека, которая позволит вам осуществлять доступ уровня APDU на рассматриваемой карте, я использую эту: http://www.smartcard -api.com / index.shtml

Как только у вас есть этодобавьте ссылку на нее так же, как и на любую другую управляемую библиотеку, есть примеры с набором, поэтому я не буду вдаваться в подробности, используя ее, нетрудно запустить собственный код.

У меня есть код, но он принадлежит авторскому праву для клиента, для которого я его написал, поэтому я не могу дать его вам.

Как только вы в состоянии начать посылать команды на карту, и если это карта, котораяподдерживает стандартную структуру EMV, первое, что вам нужно сделать, это выбрать PSE, обычно есть два способа сделать это.

1) Использовать выбор AID

Из спискаAID (идентификаторы приложений), которые вы готовы принять, отправьтеСледующая команда для карты:

0x00, 0xA4, 0x04, 0x00

Следуйте этому AID, который вы хотите выбрать, для дебетования VISA это обычно

0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10

Это следует за данными APDU выше в виде блока данных, за которым следует 0x07 (длина данных)

То, что вы должны получить, это либо

0x9000 или 0x6100 (если вы получаете код 61, это означает, что вы должны повторить запрос с измененными параметрами, выходящими за рамки того, что я здесь пишу)

, если вы получите 0x9000 в SW1 &SW2 (Регистр карт), затем вы успешно выбрали этот AID и готовы сделать EMV-вызовы на него.

2) Используйте имя DDF для выбора требуемого платежного приложения, по сути, вы используете стандартные команды выбора карт длявыберите «1PAY.SYS.DDF01», если это контактный чип и пин-код, или «2PAY.SYS.DDF02», если он бесконтактный, это называется выбором с использованием PPSE.

После выбора платежного приложения вытогда надо читать пропосле отказа от карты вы получите некоторую информацию о том, что доступно и где искать.

Это делается с помощью команды чтения GPO, которая выглядит следующим образом:

0x80, 0xA8, 0x00, 0x00, 0x83, 0x00

Это вернет структуру TLV, которую вам придется проанализировать для деталей.

TLV - очень простая концепция, ваш поток данных разделен на3 группы

TAG

ДЛИНА

и

ЗНАЧЕНИЕ

, следовательно, TLV,

Метки TLV могут бытьпеременная длина от 1 до 3 байтов, как правило, хотя вы никогда не увидите больше 2 байтов.Если ваш первый байт, дополненный 0x1F, больше 31 (то есть установлены биты 6 или 7), то у вас есть 16-битный тег, и в этом случае вам нужно взять только что полученный байт, сдвинув его влево на 8 бит, а затемдобавьте следующий байт в последовательность.

Как и в случае со следующим байтом, если при его значении 128 вы получите 128, то у вас будет длина 2 байта от 1 до 15 бит, если у вас есть TAG и длина, следующаядлина оставшихся байтов является полезной нагрузкой.

Эта полезная нагрузка может быть вложенной, фактически вы, скорее всего, найдете структуры TLV в структурах TLV, поэтому необходимо будет написать хороший рекурсивный синтаксический анализатор.

После того, как выПроанализировав данные из объекта GPO, вы можете использовать это, чтобы найти фактические данные карты. Здесь вы начинаете читать такие вещи, как эквивалентные данные PAN и track2, однако, обратите внимание, что хотя существуют стандарты, не всеони на 100% идентичны.Большинство карт имеют собственную область данных, также обратите внимание, что номера PIN и CVV НЕ доступны непосредственно с карты, вместо этого вы обнаружите, что в большинстве случаев будет зашифрованный блок PIN или CVV, который предназначен для отправки вВыпуская обратно вместе с соответствующим сертификатом с карты, эмитент сообщит, был ли введенный пин-код правильным.

Некоторые карты могут выполнять проверку PIN-кода в автономном режиме, однако на сайте Вольфганга Ранкельса содержится много информации о различных стандартных функциях и доступных вызовах данных, в основном на SIM-картах GSM, но он также охватывает EMV, вы также можете найти его сайт. здесь:

http://www.wrankl.de/

В этом предмете ОГРОМНО больше, чем я описал здесь, это всего лишь верхушка айсберга, однако, поскольку вы опубликовали это более 6 месяцев назад, я полагаю, что вы, возможно, добились некоторого прогресса самостоятельно сейчас, если нет, то я надеюсь, что это поможет.

...