智能卡未响应重置

Posted

技术标签:

【中文标题】智能卡未响应重置【英文标题】:The smart card is not responding to a reset 【发布时间】:2017-08-01 20:48:36 【问题描述】:

我一直在从事智能卡的读/写操作,我相信我的卡是 sle_4428,我正在使用 HID OMNIKEY 3121 USB 读卡器。问题是当我在读卡器中输入卡时,我的程序响应为 智能卡没有响应重置,错误代码为 0x80100066,而不是连接卡并获取ATR...

[编辑] 如果我只执行读取操作,它工作正常。当我执行写入操作然后重新插入卡时,它会停止响应,并给出上述消息。我用来写的APDU命令是:FF D6 00 00 #(01 02)

【问题讨论】:

你试过不同的卡吗? 是的,我尝试了不同的卡,起初它被检测到并成功读取/写入数据,然后再次插入后,它停止响应并给出与上述相同的错误消息。跨度> 始终检查您使用命令发送的长度.. @shadygoneinsane,实际上,如果我只执行读取操作,它就可以正常工作。当我执行写入操作然后重新插入卡时,它停止响应,并给出上述消息....我用来写入的 APDU commad 是:FF D6 00 00 #(01 02) 我们也遇到了 HID OMNIKEY 5421 重置的问题。我尝试研究 HID omnikey 工作台工具及其 dll。我找到了“WANtennaControl”方法。使用此方法,您可以正确地冷重置智能卡。试用工作台工具并从那里重置。 【参考方案1】:

您的问题是 HID Omnikey 未能正确“冷”重置智能卡。

使用以下 Java 代码片段,您可以重置 HID Omnikey 阅读器 CL。

import jnasmartcardio.Smartcardio;

import javax.smartcardio.*;
import javax.xml.bind.DatatypeConverter;

public class OMNIKEYConfiguration 

public static void main(String... args) throws Exception 
    TerminalFactory factory = TerminalFactory.getInstance("PC/SC", null, new Smartcardio());

    String terminalName = "OMNIKEY CardMan 5x21-CL 0";
    CardTerminal terminal = factory.terminals().getTerminal(terminalName);

    // Connect directly to reader
    Card card = terminal.connect("DIRECT");

    int code = 3224092; // #define IOCTL_CCID_ESCAPE SCARD_CTL_CODE(3500)
    byte[] command = DatatypeConverter.parseHexBinary("0300"); // 0300 - ON; 0301 - OFF
    byte[] resp = card.transmitControlCommand(code, command);
    System.out.println(DatatypeConverter.printHexBinary(resp));

    card.disconnect(true);


使用命令“0x0300”打开天线,否则使用“0x0301”关闭天线。

对于冷复位调用 OFF 然后 ON 命令。

【讨论】:

以上是关于智能卡未响应重置的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015 未响应/已停止工作的问题解决

Allegro 16.6在PCB布线过程中放大缩小时经常出现卡在那未响应了

VSCode 窗口未响应

wps为啥老是未响应

windows资源管理器经常未响应?

javplayer显示未响应