如何使用pyscard编写智能卡

21

我正在使用读写器 ACR38F,我的智能卡是 SLE4418。如何读写文本到我的智能卡上?

例如:Hello World!

apdu = [0XFF, 0X20,0x00,0x00,0x02, 0x00, 0x00]

response, sw1, sw2 = cardservice.connection.transmit( apdu )

apdu = [0XFF,0xA4,0x00,0x00,0x01,0x05]
response, sw1, sw2 = cardservice.connection.transmit( apdu )




apdu = [0XFF,0XB2,0X00,0xA7,0X09]
response, sw1, sw2 = cardservice.connection.transmit( apdu )
print response


apdu = [0XFF, 0XD0,0x00,0xA7,0x09,0xA7,0x02,0xA7,0x02,0xA7,0x02,0xA7,0x02,0xA7] 
response, sw1, sw2 = cardservice.connection.transmit( apdu )
卡片响应:
connecting to ACS CCID USB Reader 0
ATR 3B 04 92 23 10 91
>  FF 20 00 00 02 00 00
<  00 00 00 90 0 
>  FF A4 00 00 01 05
<  []  90 0 
>  FF B2 00 A7 09
<  FF FF FF FF FF FF FF FF FF 90 0 
[255, 255, 255, 255, 255, 255, 255, 255, 255]
>  FF D0 00 A7 09 A7 02 A7 02 A7 02 A7 02 A7
<  []  90 0 

1
这不是最终答案,但您可以尝试理解读者的手册,然后使用PyUSB来进行操作... - Pill
你想读/写智能卡存储器中的文本吗?“读取并将我的智能卡写入文本”是什么意思? - Sasha
@sasha 是的,我想写入内存。@pill 我不知道如何使用pyusb... - john misoskian
1个回答

13
我没有测试这个硬件,但这应该可以帮助你开始:
与智能卡通信涉及发送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 )

其他相关信息:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接