智能卡无法响应重置

时间:2017-08-01 20:48:36

标签: smartcard smartcard-reader pcsc

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

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

1 个答案:

答案 0 :(得分: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命令。