" acr38卡工具有什么区别" &安培; " opensc&#34 ;?

时间:2014-05-26 10:37:47

标签: smartcard apdu

我在Javacard上传了一个HelloWorld.cap文件,并通过“acr38卡工具”软件向卡片发送了一些APDU命令,并以ASCII码作为输出收到了 Helloworld!。但是当我使用opensc-tool发送相同的APDU命令时,我在输出中收到无效参数,而不是 HelloWorld! 有什么问题?

ACR38卡工具输出:

< 00 A4 04 00 0B 00
< 01 02 03 04 05 06 07 08 09 00 66
> 610B

< 00 C0 00 00 00 0B
> 62 79 62 79 65 20 57 6F 72 6C 64
> 9000

Opensc-tool输出:

C:\Program Files\OpenSC Project\OpenSC\tools>opensc-tool.exe -s 00:a4:04:00:0b:0
1:02:03:04:05:06:07:08:09:00:66
Using reader with a card: ACS CCID USB Reader 0
Sending: 00 A4 04 00 0B 01 02 03 04 05 06 07 08 09 00 66
Received (SW1=0x90, SW2=0x00)

C:\Program Files\OpenSC Project\OpenSC\tools>opensc-tool.exe -s 00:c0:00:00:00:0
b
Using reader with a card: ACS CCID USB Reader 0
Sending: 00 C0 00 00 00 0B
APDU transmit failed: Invalid arguments

2 个答案:

答案 0 :(得分:2)

我认为,opensc-tool会在启动时隐式重置该卡。所以第一个命令的效果,i。即选择应用程序时,在发送第二个命令时会丢失。我会尝试下一步,在同一个opensc-tool调用中指定两个命令。

答案 1 :(得分:1)

00 C0 00 00 00 0B

不是有效的APDU。 ISO 7816-4 APDU(长度为1字节的字段)如下所示:

+----------+----------+----------+----------+----------+------------+----------+
| CLA      | INS      | P1       | P2       | Lc       | DATA       | Le       |
| (1 byte) | (1 byte) | (1 byte) | (1 byte) | (1 byte) | (Nc bytes) | (1 byte) |
+----------+----------+----------+----------+----------+------------+----------+
仅当LcNc字段的长度)大于0字节时,

DATA才会出现。 Le仅在响应APDU中存在预期数据时才会出现。

由于您的APDU不包含DATA字段,因此该字段不得包含Lc字段。因此

00 C0 00 00 0B

INS = 0xC0,预期响应长度为11个字节)或

00 C0 00 00 00

INS = 0xC0,预期响应长度为256字节)将是接近您的&#34; APDU&#34;的有效APDU命令。