我正在尝试阅读AFL - EMV借记卡中的应用程序文件定位器。对于某些卡片,当我通过apdu时 -
0x80, 0xA8, 0x00, 0x00, 0x02, 0x83, 0x00 ,0x00 (with no PDOL )
这里给出了0x900,但对于某些卡,它给出了 0x6984
对于那些提供 0x6984 的卡片,我试图发送apdu之类的 -
带有PDOL值的 0x80, 0xA8, 0x00, 0x00, 0x04, 0x83, 0x02, 0x08,0x26 , 0x00;
在这里工作正常,并根据需要给予AFL。
根据标准说: -
6.5.8.3 Data Field Sent in the Command Message
The data field of the command message is a data object coded according to the PDOL provided by the ICC, as defined in section 5.4, and is introduced by the tag '83'. When the data object list is not provided by the ICC, the terminal sets the length field of the template to zero. Otherwise, the length field of the template is the total length of the value fields of the data objects transmitted to the ICC
我理解的是 - PDOL首先由ICC提供,然后我们在GPO命令中使用它。
我很困惑为什么有些卡工作正常,没有PDOL或某些卡没有。 PDO在GPO中有什么意义,我如何从ICC获得PDOL以及我们如何在GPO命令中使用它?
答案 0 :(得分:4)
显然,通过记录提供PDOL是不好的,因为如果您不知道PDOL,则无法发送GET PROCESSING OPTIONS APDU,因此您无法获取可用记录列表。
PDOL可以存在于带有标记'9F38'的FCI数据中,标记'9F38'本身位于构建的标记'A5'下。
解析PDOL就像任何其他数据对象列表一样。如支付系统的EMV集成电路卡规范,第3册:应用规范,版本4。3,2011年11月,第5.4节所述:
“DOL是条目的串联列表,每个条目表示要包含在构造字段中的单个数据元素。每个条目的格式是一个或两个字节的标记,用于标识所需的数据对象,后跟一个字节长度,表示字段在命令数据中占用的字节数。“
当您在GET PROCESSING OPTIONS APDU中发送DOL相关数据时,您可以参考规范的相同章节:
“为了最大限度地减少ICC内的处理,这样的列表不是TLV编码的,而是通过将多个数据元素连接在一起构建的单个构造字段。”