javax.smarcardio 未知异常 0x1f

标签 java session smartcard apdu smartcard-reader

我现在正在研究读卡器。我想从卡上获取数据。我拿了uid。我想获取加密数据。所以我想进入安全模式并启动 session 。我做了一些事情。我发送命令 apdu 来启动 session ,但每次都返回未知异常 0x1f 这是代码。

    TerminalFactory factory = TerminalFactory.getDefault();

    List<CardTerminal> terminals = factory.terminals().list();

    terminal = terminals.get(0);
    card = terminal.connect("T=1");
    CardChannel channel = card.getBasicChannel();
    byte[] c1 = { (byte) 0x80, (byte) 0x72, (byte) 0x80, (byte) 0x00, (byte) 0x18, (byte) 0x5c, (byte) 0xc5,
            (byte) 0x0a, (byte) 0xa2, (byte) 0x5b, (byte) 0x38, (byte) 0x7f, (byte) 0x81, (byte) 0x3a, (byte) 0x3d,
            (byte) 0x1a, (byte) 0x88, (byte) 0x7d, (byte) 0x26, (byte) 0xfc, (byte) 0x2b, (byte) 0xa8, (byte) 0xa7,
            (byte) 0xdd, (byte) 0xdc, (byte) 0x71, (byte) 0xe0, (byte) 0xf3, (byte) 0xc6 };

    ResponseAPDU response = channel.transmit(new CommandAPDU(0xFF, 0x00,0x00,0x00,c1,5,24));

此代码返回我 6a81(这意味着功能不支持),

如果我直接发送启动 session 命令(84 72 00 00)这次返回未知异常。

请帮助我。您不必查找代码中的错误。告诉我如何在智能卡中启动 session 。我使用 HID OMNıKEY 5021 CL。

Exception in thread "main" javax.smartcardio.CardException: sun.security.smartcardio.PCSCException: Unknown error 0x1f
at sun.security.smartcardio.ChannelImpl.doTransmit(ChannelImpl.java:219)
at sun.security.smartcardio.ChannelImpl.transmit(ChannelImpl.java:90)
at CardReader.GetUID.getUID(GetUID.java:48)
at CardReader.GetUID.main(GetUID.java:86)

最佳答案

您发送的 APDU 是错误的,因为您使用 CommandAPDU 的方式不正确。

新 CommandAPDU(0xFF, 0x00,0x00,0x00,c1,5,24)

创建一个以 FF000000185CC50AA2... 开头的 APDU,这不是您(可能)想要的。

尝试使用new CommandAPDU(0x84, 0x72,0x00,0x00,c1,5,24)

参见CommandAPDU javadocAPDU format description .

关于javax.smarcardio 未知异常 0x1f,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38830861/

相关文章:

java - 使用 NameSpaceHandler 时 Spring bean 之间的引用

Tomcat 中的 session ID 长度

javascript - Facebook 连接 : Can't logout using PHP SDK + JS SDK

java - 使用 Java 9+ 的智能卡提供程序中的可用插槽

android - Android 上是否有 javax.smartcardio 类似物?

smartcard - DESFire 写入数据命令失败,出现 917E(长度错误)

java - 仅从 Android N (--min-api 24) : void butterknife. Unbinder.lambda$static$0() 开始支持静态接口(interface)方法

java - 查询多对多关系中某个值的总和

java - 文件编写器和空格?

php - 恶意用户是否可以编辑 $_SESSION?