在 Swift 中从 ATR 确定卡号



我正在使用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 00

00 03 10 10//签证援助

选择应用程序

00 a4 04 00 07  A0 00 00 00 03 10 10 00

然后 Fire GPO 命令 ,它会为您提供 AFL 详细信息。接下来,您需要触发读取记录命令并搜索PAN标签(5A)。

这个SO帖子可能对你有用。希望此信息可以帮助您获得所需的卡号/PAN。

相关内容

  • 没有找到相关文章

最新更新