22

リーダー/ライター acr38f を使用しており、スマート カードは SLE4418 です。スマート カードでテキストを読み書きするにはどうすればよいですか?

例えば:Hello World!

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

応答、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 
4

1 に答える 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 )

その他の関連情報:

于 2011-08-19T08:49:25.413 に答える