gpt4 book ai didi

java - 是否可以在卡不存在时发送伪 APDU 命令?

转载 作者:搜寻专家 更新时间:2023-10-31 20:10:41 28 4
gpt4 key购买 nike

我正在使用 javax.smartcardio 包来开发与智能卡相关的应用程序。我想发送伪 ADPU 命令来设置阅读器的 LED/LCD 状态。

我发现向读卡器/卡发送 APDU 命令的唯一方法是 CardChannel::transmit,但它必须在存在的卡上运行。

读卡器中没有卡时是否可以发送伪 APDU 命令? APDU命令怎么样? (使用 Java)

最佳答案

http://www.springcard.com中从SDK for PC/SC中的card-emul示例中找到了解决方案| .这是我的代码:

import java.util.List;

import javax.smartcardio.CardException;
import javax.smartcardio.CardTerminal;
import javax.smartcardio.TerminalFactory;

public class TestPcsc {

public static void main( String[] args ) throws CardException {

TerminalFactory tf = TerminalFactory.getDefault();
List< CardTerminal > terminals = tf.terminals().list();
CardTerminal cardTerminal = (CardTerminal) terminals.get( 0 );

byte[] command = { (byte) 0xE0, (byte) 0x00, (byte) 0x00, (byte) 0x29, (byte) 0x01, (byte) 0x00 };
cardTerminal.connect( "DIRECT" ).transmitControlCommand( CONTROL_CODE(), command );

}

public static int CONTROL_CODE() {

String osName = System.getProperty( "os.name" ).toLowerCase();
if ( osName.indexOf( "windows" ) > -1 ) {
/* Value used by both MS' CCID driver and SpringCard's CCID driver */
return (0x31 << 16 | 3500 << 2);
}
else {
/* Value used by PCSC-Lite */
return 0x42000000 + 1;
}

}

}

我认为的要点是:

  1. 使用DIRECT协议(protocol)获取'card'
  2. 使用 Card::transmitControlCommand 方法和从 CONTROL_CODE 函数中获取的代码(从示例代码中复制,不确定理论是什么>_<)

关于java - 是否可以在卡不存在时发送伪 APDU 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285606/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com