У меня есть считыватель SCR3310v2.0 и чип-карта SLE5528. Есть какие-нибудь примеры кода, чтобы можно было записывать и считывать информацию с карты, или есть какое-нибудь бесплатное программное обеспечение, которое это делает?
SCR3310v2.0 и SLE5528 для чтения/записи?
Ответы (1)
Я использую ACR38, поэтому может немного отличаться.
Если вы только начали использовать смарт-карты, вам обязательно нужно приобрести какой-нибудь SDK (в основном это то, о чем вы просите).
Что касается SLE5528: карта действительно простая, есть 3 команды, о которых вы должны знать.
1) Читать, можете использовать эту команду в любое время (пока вы подключены). с 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
Обратите внимание, что программа чтения всегда будет возвращать два дополнительных байта к тому, что мы ожидаем. эти два байта называются кодом ПО (или кодом состояния). 90 00 значит все хорошо. вы можете найти ссылки на значение каждого кода возврата
вот руководство для ридера, с которым я работаю: http://www.acs.com.hk/drivers/eng/PMA_ACR38x.pdf
Если можете, используйте java, так как они имеют встроенные функции для работы со смарт-картами, иначе. вы можете делать то же, что и я, и работать с WinSCard API Windows.
SLE5528 уникальный идентификатор? Что такое команда APDU для его получения?
- person FireFalcon; 20.02.2018