SCR3310v2.0 и SLE5528 для чтения / записи? - PullRequest
1 голос
/ 01 августа 2011

У меня есть считыватель SCR3310v2.0 и чип-карта SLE5528. Есть примеры кода, позволяющие записывать и считывать информацию о карте, или есть какое-нибудь бесплатное программное обеспечение, которое это делает?

1 Ответ

3 голосов
/ 17 октября 2011

Я использую ACR38, поэтому он может немного отличаться.

Если вы только начали работать со смарт-картами, вы должны демонстративно получить какой-нибудь SDK (именно этого вы и просите).

Что касается SLE5528: Карта действительно простая, есть 3 команды, о которых вы хотите знать.

1) Read , можете использовать эту команду в любое время (если вы подключены). с ACR38 я отправлю эту команду:

FF B2 MSB LSB Length

Это команда APDU , первый байт с именем CLA , а второй - INS . эти два обычно используются для описания команды (возможно, всегда). тогда у вас есть P1 и P2 , эти два байта обычно используются для описания адреса на карте или диапазона команды. последний - Lc , в этом случае (возможно, всегда) он представляет количество байтов для чтения. любой байт после них является байтом данных, который может потребоваться команде.

Обратите внимание, что, поскольку эта отрасль настолько дикая, некоторые производители могут использовать разные команды. Если я правильно помню, в руководстве, которое я использовал, указывалось B0 в INS, но в демонстрационном коде SDK они использовали B2, который также был единственным, что сработало.

2) Проверьте PSC , сначала вы должны использовать эту команду, если планируете использовать команду записи. (один раз для каждого сеанса).

FF 20 00 00 02 PSC1 PSC2

Обычно код PSC по умолчанию - FF FF.

3) Запись , после проверки с помощью карты вы можете выполнить эту команду для записи данных:

FF D0 MSB LSB Length DATA1 DATA2 DATA3 and so on.....

Если я хотел изменить код PSC, все, что мне нужно было сделать, это записать его три байта в адрес 03 FD. обратите внимание, что фактический код проверки составляет только два байта, но по какой-то причине мне всегда нужно записывать первый байт как FF, а затем фактические два байта, которые я хочу проверить. Я считаю, что есть какая-то причина, я просто не знаю, что это такое.

Итак, чтобы написать простую программу, которая сначала считывает 14 байтов с адреса A4 03. Затем проверьте с помощью карты, используя код PSC по умолчанию. и, наконец, изменяет код PSC на A2 B2; мы сделаем это:

<< FF B2 A4 03 0E
>> FF FF FF FF FF FF FF FF FF FF FF FF FF FF 90 00
<< FF 20 00 00 02 FF FF
>> FF FF FF 90 00
<< FF D0 03 FD 03 FF A2 B2
>> FF A2 B2 90 00

Обратите внимание, что читатель всегда возвращает два дополнительных байта к тому, что мы ожидаем . эти два байта называются кодом SW (или кодом состояния). 90 00 значит все хорошо. Вы можете найти ссылки для значения каждого кода возврата

вот руководство для читателя, с которым я работаю: http://www.acs.com.hk/drivers/eng/PMA_ACR38x.pdf

Если можете, используйте java , так как в противном случае они имеют встроенные функции для работы со смарт-картами. Вы можете сделать то, что я сделал, и работать с WinSCard API Windows.

...