簡體   English   中英

卡不存在時是否可以發送偽APDU命令?

[英]Is it possible to send Pseudo-APDU commands while card is not present?

我正在使用javax.smartcardio包開發智能卡相關的應用程序。 我想發送Pseudo 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協議獲取'卡'
  2. 使用Card::transmitControlCommand方法和從CONTROL_CODE函數獲得的代碼(從示例代碼中復制,不確定理論是什么> _ <)

我認為下面的方法也需要讀卡器中的卡片,但僅僅是為了您的信息,我在這里發布它說我們還有另一種終端控制命令的方法:

引自這里

transmitControlCommand:

public abstract byte [] transmitControlCommand(int controlCode,byte [] command)拋出CardException

將控制命令發送到終端設備。 例如,這可用於控制終端功能,如內置密碼鍵盤或生物識別。

參數:

controlCode - 命令的控制代碼

命令 - 命令數據

拋出:

SecurityException - 如果存在SecurityManager且調用者沒有所需的權限

NullPointerException - 如果command為null

CardException - 如果卡操作失敗

IllegalStateException - 如果此card對象已通過disconnect()方法處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM