Ответ 1
У меня нет оборудования для проверки этого, но это должно вас заставить:
Общение со смарт-картами включает в себя отправку команд APDU (модуль данных протокола смарт-карт) и получение ответов APDU.
Команды APDU отправляются через считыватель/запись (ваш ACR38F) и состоят из 4-байтового заголовка, за которым следуют данные (и информация о размере данных и размере ответа)
Field Len Description
--------------------------------------------
CLA (1) Instruction Class
INS (1) Instruction Code
P1-P2 (2) Instruction Parameters
Lc (0,1,3) Number of data bytes to follow
DATA (*) Data to be transmitted
Le (0-3) Maximum response bytes
Ответ состоит из:
Field Len Description
--------------------------------------------
DATA (*) Data to be transmitted
SW1-SW2 (2) Command status
В случае SLE4418, чтобы записать данные, значения должны быть следующими:
- CLA = 00
- INS = D6
- P1 = MSB смещения адреса памяти для хранения байтов
- P2 = LSB смещения адреса памяти для хранения байтов
- Lc = длина байтов для хранения
- DATA = данные для хранения
- Le = (пусто)
Итак, поэтому в коде:
WRITE = [0x00, 0xD6]
STARTMSB = [0x00] #change to where on the card you would like to write
STARTLSB = [0x00] #same here
MEM_L = [0x01]
DATA = [0x01]
cardservice.connection.connect()
apdu = READ + STARTMSB + STARTLSB + MEM_L + DATA
response1, sw1, sw2 = self.cardservice.connection.transmit( apdu )
Другая актуальная информация: