Android Pay读取智能卡:SELECT指定ADF失败,如何获取PDOL?
智能卡ADF未找到时获取PDOL的方案
背景操作回顾
- 发送SELECT PPSE命令:
成功获取2PAY.SYS.DDF01响应,但发送目标ADF的SELECT命令:00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00
收到响应00 A4 04 00 07 A0 00 00 06 58 10 10SW1SW2 = 6A82: File not found,且PPSE响应的9F2A标签显示需遵循Kernel 1规范。
解决步骤
解析PPSE响应的目录条目
仔细分析SELECT PPSE返回的完整响应数据,重点提取其中的目录条目。每个条目对应卡片上的一个可用应用,包含AID、优先级等信息。目标ADF未被找到,说明该AID不存在于卡片的应用列表中,需从目录条目里提取实际存在的AID,再对这些AID发起SELECT操作。针对Kernel 1规范的PDOL获取
Kernel 1(Visa相关规范)的卡片有特殊处理逻辑:- 若PPSE响应中包含
9F38标签(PDOL),直接提取该标签的取值即可得到PDOL。 - 若PPSE响应无PDOL,尝试对2PAY.SYS.DDF01发送**GET PROCESSING OPTIONS (GPO)**命令:
卡片可能返回包含PDOL的响应,或直接返回后续处理所需的参数。80 A8 00 00 00
- 若PPSE响应中包含
读取PPSE的完整目录
若上述方法未奏效,通过READ RECORD命令遍历PPSE的所有记录:- 读取第一条记录:
00 B2 01 0C 00 - 读取第二条记录:
00 B2 02 0C 00 - 以此类推,直到返回
6A83: Record not found,确保没有遗漏任何可用的应用条目。
- 读取第一条记录:
内容的提问来源于stack exchange,提问作者Дмитрий Звягин
相关产品推荐
相关产品推荐

