问题描述
我们想从德国 EC 卡读取公共数据(如 BIC、IBAN、PAN)。我们使用非接触式界面。 对于某些卡,“select 1PAY.SYS.DDF01”APDU 的响应中包含我们要读取的信息。但对于其他一些卡片,此信息不存在。
详细地,第一步我们选择 1PAY.SYS.DDF01 应用程序:
00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00
如果响应 APDU 包含所需信息,则响应如下所示:
0A 00 6F 46 84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 34 88 01 05 5F 2D 04 64 65 60 5 4D 4B 4B 4B 4B 4B 4B 4F 44 5 C 44 4 D 4F 4C 5F 53 16 44 45 39 33 31 37 30 35 34 30 34 30 30 30 30 30 30 30 30 30 30 30 90 00
从这个响应中,我们可以提取 BIC 和部分 IBAN(所谓的 Bankleitzahl)。
但是对于某些卡,响应 APDU 看起来像这样:
0A 00 6F 1C 84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 0A 88 01 05 5F 2D 04 64 65 90 6E
问题是,在第二种情况下必须采取哪些进一步的措施?
解决方法
您的问题可能不适合 SO,但我仍会尝试以某种方式帮助您。抱歉,我不熟悉德国标准,但我认为它是基于 EMV 的。
首先,在通过非接触式接口进行操作时,您应该选择 PPSE 的 AID 而不是 PSE。在 PPSE 响应中,应该有包含目录条目和卡片中可用应用程序 AID 的模板。 PSE 具有类似的用途,但您可以参考包含应用程序目录的 SFI。您使用读取记录检索条目。
对于接触式和 PSE 方法,在 EMV 手册 1 中进行了描述。对于非接触式 PPSE 方法,请参阅手册 B。
这将处理您至少知道应该选择的正确 AID 的部分。接下来发生的事情通常更具体,您应该以一些文档为基础。