两个阅读器对 GET DATA 命令的响应不同
Posted
技术标签:
【中文标题】两个阅读器对 GET DATA 命令的响应不同【英文标题】:Two readers have different response to GET DATA command 【发布时间】:2015-07-22 04:56:26 【问题描述】:我有两个智能卡读卡器连接到我的计算机:
-
ACS ACR122U非接触式读卡器
CRT-603-CZ1非接触式读卡器
我阅读了两位读者的手册。正如手册中提到的,对于 GET DATA APDU 命令,两者都使用以下 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(Maybe 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】:您针对的是相应的阅读器,而不是卡片,因此可能存在差异。
我的假设是,您的第一张卡虽然支持 ISO 14443,但不是 A 类卡,因此没有 ATS。可能值得检查一下,读卡器是否完全支持 B 类卡,以及如何为 B 类卡检索 ATQB。
【讨论】:
谢谢。第一张卡,ACR122不返回UID,CRT-603返回。为什么?对于第二张卡,两者的效果相同。 您正在寻址相应的读卡器,而不是卡片我无法在 OpenSC-Tool 中寻址卡片。而且,那个界面只有一张卡,我认为它不会有任何改变。以上是关于两个阅读器对 GET DATA 命令的响应不同的主要内容,如果未能解决你的问题,请参考以下文章
具有不同响应的命令上的 discord.js-commando 参数