我在Javacard中上传了一个HelloWorld.cap文件,并通过"acr38卡工具“软件向卡发送了一些APDU命令,并收到了Helloworld!的ASCII代码作为输出。但是当我用opensc工具发送相同的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
> 9000Opensc-工具输出:
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发布于 2014-05-27 08:06:54
我想,开放工具会在一开始就隐式地重置卡片。因此,当发送第二个命令时,第一个命令(即应用程序的选择)的效果就失去了。接下来,我将尝试在同一个opensc工具调用中指定这两个命令。
发布于 2014-05-26 21:14:12
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) |
+----------+----------+----------+----------+----------+------------+----------+只有当Lc ( Nc字段的长度)大于0字节时,才会出现DATA。只有在响应APDU中预期有数据时,Le才会出现。
由于APDU不包含DATA字段,所以它必须没有Lc字段。因此,无论是
00 C0 00 00 0B(INS = 0xC0和预期响应长度为11字节)或
00 C0 00 00 00(INS = 0xC0和预期响应长度为256个字节)将是接近" APDU“的有效APDU命令。
https://stackoverflow.com/questions/23868233
复制相似问题