两个读者对GET DATA命令有不同的响应

时间:2015-07-22 04:56:27

标签: smartcard smartcard-reader contactless-smartcard

我有两台智能卡读卡器连接到我的电脑:

  1. ACS ACR122U非接触式读者
  2. CRT-603-CZ1非接触式读者
  3. 我阅读了两位读者的手册。如手册中所述,两者都使用以下APDU命令来执行 GET DATA APDU命令:

    CLA  | INS  |     P1    |  P2  |  Le
    0xFF | 0xCA | 0x00/0x01 | 0x00 | 0x00
    
    P1 = 0x00 --> UID will return.
    P1 = 0x01 --> ATS or Historical Byte of ATS will return.
    

    好吧,我首先在 ACR122U 读卡器的字段中放入ISO14443(也许是Mifare)卡,然后在 CRT-603-CZ1 的字段中,我尝试了以上命令:

    OSC:> OSC.exe -r "ACS ACR122 0" -s FFCA000000
    Failed to connect to card: Card is invalid or cannot be handled
    
    OSC:> OSC.exe -r "ACS ACR122 0" -s FFCA010000
    Failed to connect to card: Card is invalid or cannot be handled
    
    OSC:> OSC.exe -r "CREATOR CRT-603 (CZ1) CCR RF 0" -s FFCA000000
    Sending: FF CA 00 00 00
    Received (SW1=0x00, SW2=0x00):
    FF 16 7F 29 ...)
    
    OSC:> OSC.exe -r "CREATOR CRT-603 (CZ1) CCR RF 0" -s FFCA010000
    Sending: FF CA 01 00 00
    Received (SW1=0x90, SW2=0x00)
    

    如上所述,结果不同。实际上 ACR122U 无法返回此卡的ATS和UID。

    好吧,我用 JCOPv2.4.2r3 卡重复上述步骤:

    OSC:> OSC.exe -r "ACS ACR122 0" -s FFCA000000
    Sending: FF CA 00 00 00
    Received (SW1=0x90, SW2=0x00):
    EF B6 09 2E ....
    
    OSC:> OSC.exe -r "ACS ACR122 0" -s FFCA010000
    Sending: FF CA 01 00 00
    Received (SW1=0x90, SW2=0x00):
    0E 78 F7 B1 02 4A 43 4F 50 32 34 32 52 33 .x...JCOP242R3
    
    OSC:> OSC.exe -r "CREATOR CRT-603 (CZ1) CCR RF 0" -s FFCA000000
    Sending: FF CA 00 00 00
    Received (SW1=0x00, SW2=0x00):
    EF B6 09 2E ....
    
    OSC:> OSC.exe -r "CREATOR CRT-603 (CZ1) CCR RF 0" -s FFCA010000
    Sending: FF CA 01 00 00
    Received (SW1=0x90, SW2=0x00):
    4A 43 4F 50 32 34 32 52 33 00 JCOP242R3.
    

    如你所见,两者都返回了几乎相同的结果。

    有人可以帮我理解为什么我会收到第一张卡的不同结果吗?

    请注意,OCS.exe是OpenSC-Tool

    的执行文件

1 个答案:

答案 0 :(得分:0)

您正在处理相应的读者,而非卡片,因此可能存在差异。

我的假设是,你的第一张卡,虽然支持ISO 14443不是A型卡,因此没有ATS。值得检查的是,阅读器是否完全支持B类以及如何为B类卡检索ATQB。