我正在使用ACS读卡器。我有一张非接触式VISA卡。通过读取卡,我得到以下十六进制 ATR 信息:
3B 6E 00 00 80 31 80 66 B1 A3 01 01 21 0A 83 00 90 00
从上面的ATR中,我如何检测卡号和类型?
你不能。
该 ATR(重置答案)不包含此类信息。事实上,由于您的卡是非接触式卡 (ISO/IEC 14443-4),它甚至没有 ATR,而是 ATS(答案选择),这是 ATR 的非接触式"等价物"(至少在包含信息方面)。
相反,您需要将 APDU (ISO/IEC 7816-4) 与您的卡交换,以便从中获取更多信息。由于您指的是VISA,因此您的卡可能使用非接触式卡的EMV协议(请参阅 http://www.emvco.com/)。
ATR = 重置答案,是从卡获取的十六进制字符串,作为 IFD/Card_Reader 发送的重置命令的响应。它讲述了卡的属性,例如-
- card speed
- protocol (T=0, T=1) supported by card
- etc..
如果您需要从卡中获取卡号/PAN,则需要触发Read_Record命令以从卡中获取值。顺序将像:-
- 触发 PPSE 命令(如果您的卡支持其中安装的 PPSE)
非接触式PPSE:
00A404000E325041592E5359532E444446303100 // ppse command
它将为您提供卡中安装的应用程序的AID,在您的情况下,它将是
A0 00 0000 03 10 10//签证援助
选择应用程序
00 a4 04 00 07 A0 00 00 00 03 10 10 00
然后 Fire GPO 命令 ,它会为您提供 AFL 详细信息。接下来,您需要触发读取记录命令并搜索PAN标签(5A)。
这个SO帖子可能对你有用。希望此信息可以帮助您获得所需的卡号/PAN。