根据AFL读取应用数据
(一)文档说明
我们通过GPO已经得到了AFL.接下来我们通过AFL来读取数据
终端使用AFL决定要从卡片中读取的应用数据和哪些数据用于脱机数据认证
读取交易数据 命令[00 B2],跟读取AID类似,也要注意SFI的偏移
(二)资料解析
举例: 已经得到的AFL为080102001001040118010100
分析:080102001001040118010100
对于每一个要读的文件,AFL包括4个字节:
字节1:位8–4=SFI短文件标识符 位3–1=000
字节2:文件中要读的第1个记录的记录号(不能为0)
字节3:文件中要读的最后一个记录的记录号(等于或大于字节2)
字节4:从字节2中的记录号开始,存放认证用静态数据记录的个数(值从0到字节3-字节2+1的值)
08010200
SFI:0x08>>3=0x01 (sfi = (*(ptmp + i ++) >> 3) & 0x1F)
01~02记录可读
共00条参与SDA
10010401
SFI:0x10>>3=0x02(sfi = (*(ptmp + i ++) >> 3) & 0x1F)
01~04记录可读
共01条参与SDA
18010100
SFI:0x18>>3=0x03(sfi = (*(ptmp + i ++) >> 3) & 0x1F)
01~01记录可读
共00条参与SDA
接下来循环发送读取数据命令(把AFL全部来一遍).判断哪些数据参与静态数据认证
循环发送如下:
00 B2 01(序号) 0C(08&04) 00
00 B2 02(序号) 0C(08&04) 00
00 B2 01(序号) 14(10&04) 00
00 B2 02(序号) 14(10&04) 00
00 B2 03(序号) 14(10&04) 00
00 B2 04(序号) 14(10&04) 00
00 B2 01(序号) 1C(18&04) 00
通过循环读取交易数据信息我们可以获取到几个关键的数据字段
57 - 磁条2等效数据 62 17 58 75 00 00 76 34 22 7D 24 11 22 01 00 00 82 10 0F
5F20 - 持卡人姓名
5F24 - 应用失效日期 24 11 30
5A - 应用主账号(PAN) 62 17 58 75 00 00 76 34 22 7F
8E - 持卡人验证方法(CVM)列表 00 00 00 00 00 00 00 00 02 03 1F 00
9F0D - 发卡行行为代码(IAC)-缺省 D8 60 04 A8 00
9F0E - 发卡行行为代码(IAC)-拒绝 00 10 98 00 00
9F0F - 发卡行行为代码(IAC)-联机 D8 68 04 F8 00
5F28 - 发卡行国家代码 01 56
9F46 - IC卡公钥证书 17755B9F7DC7C407EFF92229DAFB0383FA0B6FE6CBCEF87A7B26675191DAFE7AC2743F797C82541214189EB8023F5A848C713DAFE3367B9D0C643FA5CF4E2FFA8EAC3288CA8F7F8941A083A1824F774069987D0D9E20216391B124AD6461AB225BB9CCECAF974FD80FACC0326FE88378CB1B6E3922662A522859C5AF8F2EAE122BC0DBD42BA2192A28128A07129FB56AF3542CF82963AFEE980FDBD0D0DD09191F28034707248E808D97DCFADFDDC052
9F47 - IC卡公钥指数 03
93 - 签名的静态应用数据(SAD) D93A3C270E8D849F16E0E935AA4504CA89499D246F4364D64C1C1B3EB70A5435C4286EC6071D294216F594E600A82FE3C522C108DACEC64D700A8681A6B3BAEDDB12AE544DA1D9F3ACEF9FECE97B91A1B5B55474BC9D58096E556E6DF0B609528F2B45248DB4DFEF4E5D89AE78631CD63E7929FF9DDF142A2EE522BE388A78CE78E64B0BFADD7B3616CCAF07A6999A721EC61DB224C81DE600CBB0180193946CA03BC3A0D0714AE5B0F860AE402E8955
5F25 - 应用生效日期 141129
9F4A - 静态数据认证标签列表 82
8C - 卡片风险管理数据对象列表1(CDOL1) 9F02069F03069F1A0295055F2A029A039C019F37049F21039F4E14
8D - 卡片风险管理数据对象列表2(CDOL2) 8A029F02069F03069F1A0295055F2A029A039C019F37049F21039F4E14
9F49 - 动态数据认证数据对象列表(DDOL) 9F3704
90 - 发卡行公钥证书 AA09DA7F036FE5EB1CF1F8FA6BE8F8EC5788B318BCE9F06A1193B48DCF2A1E0785A9A888BEC9A82204F5D1DA653E09B76C326064BDDFA55E6CD7B3604A9435DFA2FE56D7CDDCA605ACA9D21C08028A348877790E4528488CFD908787CAF1F2AB0364352D4E8E7098B89FC19E75A481AA011A143187EA9B6E563A4EE105095AB2A79352C70083B6B5261BF5EF09E92B04BB22A337AF496A791D081AF77A317FA1510A8D16C7E403AF5F12F061F9CBB906
9F32 - 发卡行公钥指数 03
92 - 发卡行公钥余数 20CF86C702825B7A3DD811C5F0F61D6EED533458FEFE81C931AB58910BE9A2033E85C191
8F - CA公钥索引(PKI) 03
(三)源码片段分析
(四)常见问题及分析
1.避免读数据中的延时导致IC卡交易的性能问题.
2.避免IC卡操作中途下电操作,如果发送给IC卡的指令没有任何返回.关注下是否被中途下电.
3.判断一些交易中必须出现的标签,如果没有得到,交易失败退出.
扫描关注我
(转载本站文章请注明作者和出处 Undefined)