什么APDU命令获取卡ID

dr_*_*mot 8 apdu smartcard mifare contactless-smartcard

什么APDU命令获得7个字符的卡ID?我使用T = CL(ISO7816)pritocol和ISO14443层.在检测卡上,我只能看到4个字符的卡ID.我搜索了,这是获取卡ID的APDU命令.例如它:
0xFF, 0xCA, 0x00, 0x00, 0x00
但是thouse命令的结果是:6E 00,关于APDU答案规范的结果告诉"类不支持"

后来我发现,它的APDU命令可能为:
0x00, 0xCA, 0x00, 0x00, 0x00
此命令返回6A 88
那里6A XX- "错误的参数(S)P1-P2"88- "引用数据未找到"

你怎么想的?

谢谢!

ps所有命令为:CLA, INS, P1, P2, LenData, Data
其他我的命令正常工作(例如选择aplet并使用它),仅在获取卡ID时出现问题

Mic*_*ael 17

之前给出的答案是错误的.这是因为我们不是在谈论ISO 7816命令,而是PC/SC API的内部命令.

APDU"0xFF 0xCA 0x00 0x00 0x00"实际上是正确的,我有卡,我得到7字节答案.请注意,这仅适用于非接触式(RFID)卡,因为此UID是无线电协议的一部分.请注意,一些芯片将在每次加电后返回一个新的随机UID.例如,我的护照芯片以及我的德国国民身份证以及防止持卡人跟踪的对策都是如此.理论上,这种随机UID应以0x08开头,但情况并非总是如此.

由于UID是协议的"内部"值,因此所讨论的APDU不会发送到卡,而只是(PC/SC接口的)内部命令从读卡器驱动程序获取UID.CLA 0xFF通常不在正常使用中,因为它仅用于"协议参数选择"(PPS)的保留.PC/SC滥用此CLA作为内部命令.

此处的命令是PC/SC内部"获取数据"命令,在PC/SC规范的第3部分第3.2.2.1.3节中指定.这里P1和P2具有特殊的预定义含义,因此尝试不同的值没有意义.标准仅定义P1 = 0,P2 = 0用于获取UID,P1 = 1,P2 = 0用于"来自ISO 14443 A卡的ATS的所有历史字节,无CRC".不支持其他值.

有趣的是,标准中没有定义答案0x6A 0x88.0x6a 0x81意味着"功能不受支持",这是没有UID的卡(标准提到7816-10联系卡).另外两个定义的答案(0x62 0x82和0x6C 0xXX)定义了请求的答案长度和实际数据量之间的不匹配,这里不会发生,因为我们只是通过在请求的最后一个字节中指定0来请求任何长度数据.

那么为什么它不适合我不知道的提交者.对我来说它有效,有些卡返回4个字节,其他返回7个字节.

请参阅PC/SC标准,特别是第3部分:http://www.pcscworkgroup.com/specifications/specdownload.php


Ton*_*nyK 1

0xCA 是获取数据命令。您必须在 P1-P2 中提供 TLV 标签。

ISO 7816 第 6 部分“用于交换的行业间数据元素”列出了这些标签,但它们都没有明确对应于“卡 ID”。我建议您尝试 P2 的所有值,其中 P1 等于 0x00、0x5F 或 0x7F,以找出您的卡支持哪些数据元素。