转载请注明出处

作者:小旭

目的:

应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是由终端和卡片共同支持的。终端的AID列表是通过AID下载交易从服务端获取,卡片的AID是在做卡片个人化时写入的。

从终端角度来讲,选择方式就是目录选择法和AID列表法。

特别说明(参考了小马哥的分析和解释):

aid选择涉及到MF,DDF,ADF,EF,AEF几个概念,先描述一下这几个文件的概念。

MF、DF、EF三个概念是ISO7816的规范,做卡片的一般会比较熟悉,做终端的只要了解就可以了。

MF其实就是根目录,类似我们的C盘,D盘这些,DF就是目录,比如我们PC的program目录一样,EF就是DF下面的文件,比如PC下面的某个目录下的文件。

ADF、DDF、AEF就是PBOC规范里面的名词了,ADF和DDF其实就是DF的一个映射,AEF就是EF的映射,我们不能直接操作DF和EF,只能操作ADF和DDF以及AEF,就相当于内存管理里面物理地址和虚拟地址一样,程序不能直接使用物理地址,只能使用虚拟地址,而内存管理的单元回去实现虚拟地址到物理地址的映射。

这里还有一个区别点,既然ADF和DDF都是DF的映射,那他们两个有啥区别呢?

DDF还是一个目录,这个目录下面可能有ADF,也可能还是有DDF的。

ADF也是一个目录,但是这个目录已经是aid的目录了,这个目录的名称就是AID了。

再根据ADF名称去选择ADF,ADF下面都是AEF,也就是这个AID多对应的有用数据文件,终端在GPO时候根据返回的AFL,再去读取对应的文件。

目录选择法流程:

目录选择法支持借贷记和电子现金,同时也支持QPBOC,所以分两种情况说明。

一、借贷记和电子现金

1.终端要选择PSE,这个叫做支付环境系统,也是一个DDF。

特别说明,PB0C3.0上已经取消了DDF的概念,但是并不是取消了PSE和PPSE,只是取消了DDF的概念,也就是说取消了DDF下面还存在DDF的情况。

pboc2.0在读取记录的时候有可能读取到的是DDF,这个时候需要通过返回的SFI再去选择DDF后再去读记录,循环执行,直到读取到ADF。

主要是根据tag值为9D还是4F来判断是DFF还是ADF。

pboc3.0取消DDF后,就不用再考虑这个步骤了。

有感兴趣的可以去下面的网址,http://bbs.yktworld.com/dispbbs.asp?boardid=27&Id=4070

选择完PSE之后,PSE目录会返回SFI(tag 88),然后终端根据SFI,再执行READ RECORD命令读取记录,读记录根据SFI循环读取,直到卡片返回6A83为止,这个时候终端已经获取到卡片支持的AID(tag 4F)。每读一次记录,如果返回9000,都会获得一个卡片支持的AID。

读记录以后采用终端的aid和卡片aid比较,如果相同,则这几个应用被选中。

读记录除了返回AID外,还有几个重要参数,比如应用优先级指示器(这个比较重要),应用标签(用于在持卡人选择应用时做显示)等,PBOC文档有比较详细的解释和说明了。

当卡片和终端有多个应用支持时,需要根据应用优先级指示器的bit8来判断是否需要提示持卡人选择应用。

如果在未读到记录之前或者读记录后检查数据非法等情况,均认为是目录选择法失败,这时候就需要改用AID选择法。

上述描述比较抽象,拿一个实例和大家分享一下:

Send:20
00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44
46 30 31 00
Rec:43
6F 26 84 0E 31 50 41 59 2E 53 59 53 2E 44 44
46 30 31 A5 14 88 01 01 5F 2D 02 7A 68 9F 11 01
01 BF 0C 05 9F 4D 02 0B 0A 90 00
Send:5
00 B2 01 0C 00
Rec:45
70 28 61 26 4F 08 A0 00 00 03 33 01 01 01 50
0A 50 42 4F 43 20 44 45 42 49 54 9F 12 0A 50 42
4F 43 20 44 45 42 49 54 87 01 01 90 00 
Send:5
00 B2 02 0C 00
Rec:3
6A 83 

二、Qpboc(后续简称Q)

1.终端要选择PPSE,这个叫做支付环境系统,也是一个DDF。

2.Q在选择完PPSE之后已经可以获取到AID(可能是多个)、应用优先级、应用指示器,Q不支持持卡人选择应用,所以如果有多个AID的时候,需要根据应用优先级选择优先级最高的AID,再根据AID选择ADF,就可以获取到PDOL(关键数据)、发行卡代码等数据。

Q和借贷记的区别(仅讨论应用选择部分):

1、Q不支持持卡人选择应用。

2、Q不支持AID列表选择法。

3、Q的流程简化了很多。

借贷记需要根据选择PSE返回的SFI读记录获取AID,再根据AID去选择ADF,再去读数据;Q在选择PPSE之后就可以获取到AID,直接选择ADF了。

再拿一个实例来看一下

send:20
00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44
46 30 31 00
rec:52
6F 30 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46
30 31 A5 1E BF 0C 1B 61 19 4F 08 A0 00 00 03 33
01 01 01 50 0A 50 42 4F 43 20 44 45 42 49 54 87
01 01 90 00
send:14
00 A4 04 00 08 A0 00 00 03 33 01 01 01 00
rec:88
6F 54 84 08 A0 00 00 03 33 01 01 01 A5 48 50 0A
50 42 4F 43 20 44 45 42 49 54 87 01 01 9F 38 18
9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A
02 9A 03 9C 01 9F 37 04 5F 2D 02 7A 68 9F 11 01
01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54 BF 0C
05 9F 4D 02 0B 0A 90 00 

AID选择法流程

AID选择法,就是终端将自己所支持的全部AID通过SELECT命令发送给卡片,逐一尝试,看哪条AID是卡片所支持的。

选完AID后续的处理还是目录选择法一样,根据支持AID的情况判断是否需要做持卡人选择应用。

实例一下就看明白了:

send:12
00 A4 04 00 06 A0 00 00 00 25 01 00
rec:3
6A 82
send:13
00 A4 04 00 07 A0 00 00 00 03 10 10 00
rec:3
6A 82
send:13
00 A4 04 00 07 A0 00 00 00 03 20 10 00
rec:3
6A 82
send:13
00 A4 04 00 07 A0 00 00 00 04 10 10 00
rec:3
6A 82
send:13
00 A4 04 00 07 A0 00 00 00 65 10 10 00
rec:3
6A 82
send:14
00 A4 04 00 08 A0 00 00 03 33 01 01 06 00
rec:3
6A 82
send:14
00 A4 04 00 08 A0 00 00 03 33 01 01 01 00
rec:74
6F 45 84 08 A0 00 00 03 33 01 01 01 A5 39 50
0A 50 42 4F 43 20 44 45 42 49 54 87 01 01 9F 38
09 9F 7A 01 9F 02 06 5F 2A 02 5F 2D 02 7A 68 9F
11 01 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54
BF 0C 05 9F 4D 02 0B 0A 90 00
send:14
00 A4 04 00 08 A0 00 00 03 33 01 01 02 00
rec:3
6A 82 

应用选择后,终端已经获取到PDOL,PDOL将会作为后续进行GPO的重要数据。

EMV技术学习和研究(二)应用选择相关推荐

  1. EMV技术学习和研究

    今天在工作中碰到一些问题,就找到了这篇文章,个人感觉很好,保存下来,以供随时学习. 转载地址:EMV技术学习和研究 作者:小旭 目的: 应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是 ...

  2. EMV技术学习和研究(一)开篇

    在这个行业也3年多了,一直想写写关于EMV和PBOC的内容,但是总觉得自己懂得还不够,对EMV和PBOC的理解还不够深入. 但是后来想想,如果还不开始自己写一点东西的话,可能这个事情也就永远的搁浅了, ...

  3. EMV技术学习和研究(十二)交易限额

    转载请注明出处 作者:小旭 EMV参数里面有几个限额,但是感觉这几个限额都比较容易混淆和模糊,下面一个一个的来讨论一下. 终端最低限额(9F1B).终端电子现金交易限额(9F7B).非解最低限额(DF ...

  4. EMV技术学习和研究(三)应用初始化读应用数据

    转载请注明出处 作者:小旭 借贷记和Qpboc在应用初始化和读应用数据方面的流程还是比较相似. 先看借贷记和电子现金的处理流程 应用选择完成后,终端获取到了PDOL数据(特别说明:这个不是必须的,卡片 ...

  5. EMV技术学习和研究(十一)QPBOC

    转载请注明出处 作者:小旭 Q在选择完应用之后,是有一步交易预处理,交易预处理是对交易限额的处理,在交易开始之前首先对交易金额做出计算和判断.有点类似于借贷记交易中终端风险管理中所完成的步骤.关于交易 ...

  6. EMV技术学习和研究(五)脱机数据认证之DDA

    转载请注明出处 作者:小旭 有了前面对SDA的熟悉,接下来再研究DDA就会感觉比较轻松一点了. 用于动态数据认证的数据和SDA部分所描述的一样,也是基于SFI的来组织的. 特别说明一下:之前有一个地方 ...

  7. EMV技术学习和研究(七)持卡人验证

    转载请注明出处 作者:小旭 持卡人认证部分,EMV和PBOC是有区别的,EMV有脱机加密PIN认证,PBOC没有:PBOC有持卡人身份证件验证,但是EMV没有. 持卡人验证主要基于两个数据要素,AIP ...

  8. EMV技术学习和研究(九)终端行为分析

    转载请注明出处 作者:小旭 这一块的内容,我觉得文档上讲的比较清晰,而且举例也很好,所以大部分都是拷贝文档的内容过来,一边看一边分析文档的含义. 这一部分用到2类比较重要的数据,分别是 发卡行行为代码 ...

  9. HFM深入技术学习系列之二--规则

    学习的路线 学习如何写规则,从技术的角度看,从以下几点入手: 0 HFM合并报表的基本业务功能 1 规则的入口,即HFM是从哪里调用我们写的规则. 2 规则的基本语法,规则是用VBSCRIPT写的,这 ...

最新文章

  1. 转:Object-Runtime的基本数据类型
  2. Java架构师成长之道之浅谈计算机系统架构
  3. php实现当前用户在线人数
  4. 这个数据仓库,竟然把淘宝和京东干翻了。。
  5. NeurlPS 2019丨微软亚洲研究院 5 篇精选论文解读
  6. linux tbb 安装_Ubuntu18.04 GCC9 安装
  7. 三菱plc 毕设_PLC漏型和源型输入有何不同?
  8. Ubuntu 网络配置
  9. qqxml图片代码_QQxml卡片代码合集超大图、清明上河图、官方认证推荐等
  10. HTML YouTube 视频
  11. python抓取淘宝评论_python3抓取淘宝评论内容
  12. ios10--拳皇动画
  13. SpringBoot 整合ActiveMQ
  14. My Notes Keeper 注册码算法注册机
  15. leetcode714
  16. Mosquitto安装配置和使用指南
  17. 《LOL》从代码上来说最难的是哪个英雄?
  18. RAC环境scan ip详解
  19. DIY六足仿生机器人,了解一下?
  20. 每个人都至少需要4个邮箱账户(附国内外数十个免费邮箱)

热门文章

  1. 正则 [.\n]* (.|\n)* 区别
  2. 荣联科技集团获“2022中国数字生态最具号召力奖”
  3. Java中excel的导出导入
  4. 介绍一款开源的自动驾驶仿真模拟器-Carla
  5. html input禁止驶入,layui form表单 input输入框获取焦点后 阻止Enter回车自动提交 – 执念 – 博客园...
  6. 字节面试杂谈——计算机网络原理
  7. Linux开放80端口
  8. RTThread 挂载SD卡 init SD card failed
  9. 华硕笔记本装固态,清灰,装win10教程
  10. pytorch 状态字典:state_dict