卡片应用分析(二)"/>
PBOC卡片应用分析(二)
接上一篇,上次基本上卡在了选择ADF之后的操作,选择完ADF之后根据Response的数据,需要做获取处理选项GPO,但是对PDOL这个东西一直搞不明白,GPO指令的数据域是PDOL,PBOC规范上对GPO的指令写的也是很模糊,只说了没有PDOL的发8300,有PDOL项的发PDOL,但是泛泛的浏览PBOC规范,对选择应用之后返回的数据中PDOL的内容也没有细说,折腾了半天才反应过来PDOL的格式,仔细对照规范对PDOL的解析如下。 +-----------+----------+-------------------+----+---------+----+--------------+-----+ | PDOL的Tag | PDOL长度 | 电子现金指示器Tag | | 取值说明 |
| 80 |
| A8 |
| 00 |
| PBOC3.0规范上写的是0,实际应该是数据域长度 |
| |
| 0 |
下面发送GPO指令 7.GPO APDU:80A800000B 83099F7A019F02065F2A02 SW1SW2:6114
8.GET RESPONSE APDU:00C0000014 RETURN:80127C000801010010010301
规范中说GPO的Reaponse数据中应该是一个BER-TLV编码的数据对象,有两种格式一种是标签为‘80’,一种是标签为‘77’,这个明显是标签为‘80’的。数据对标表示了AIP和AFL。AIP列出了交易在处理过程中执行的功能;AFL列出交易需要读出的数据存放的短文件标识符、记录号、记录个数以及脱机数据认证需要的静态签名数据的存放位置。 下面对报文进行解析,在规范上没有看太明白,一边baidu一边看规范进行解析的。 80是Tag,12是长度,7C00是AIP. 7C00按照规范是
| |
| |
| 支持SDA |
| 支持DDA |
| 支持持卡人认证 |
| 执行终端风险管理 |
| 支持发卡行认证 |
| 0=RFU |
| 不支持CDA |
| RFU=0 |
后面4字节08010100应该就是AFL了。 08-短文件标示符,01-第一个要读出的记录号,01-最后一个要读出的记录号,00-存放用于脱机数据认证的数据的连续记录个数,字节2指出的是第1条要读的记录号。
下面要根据AFL的指示读取SFI指向的文件,文件号格式是SFI左移3位,右边补100,字节0x80中表示SFI的是bit8~bit4,所以0000 1000中只有0000 1是SFI,按前面的规则处理后文件号格式就是01100就是0x0C,所以构造APDU读一下记录。
9.READ RECORD APDU:00B2010C00 SW1SW2:6C3C
调整一下Le重新下发APDU
10.READ RECORD APDU:00B2010C3C RETURN:703A5 后面跟了58字节数据涉及我自己隐私就不发出来了 SW1SW2:9000
数据等价二磁道数据,包含了持卡人姓名,证件号码,证件类型等信息
继续往后读下一个文件
11.READ RECORD APDU:00B2011400 SW1SW2:6C44
调整一下Le重新发指令
12.READ RECORD APDU:00B2011444 RETURN:一堆私人数据 SW1SW2:9000
13.READ RECORD APDU:00B2021400 SW1SW2:6CBA
14.READ RECORD APDU:00B20214BA RETURN:一堆私人数据 稍后分析。 SW1SW2:9000
更多推荐
PBOC卡片应用分析(二)
发布评论