银联卡QPBOC处理流程及数据分析

qPBOC基本信息数据采用TLV(tag-length-value)的表示方式,即每项由tag标签(T),长度(L)和取值(V)构成。

 

标签:

  tag标签的属性为bit,由16进制表示,占1~2个字节长度。若tag标签的第一个字节(注:字节排序方向为从左往右数(b8~b0),第一个字节即为最左边的字节。bit排序规则同理。)的后四个bit为“1111”,则说明该tag占两个字节,例如“9F33”;否则占一个字节,例如“95”。b8和b7两位标识tag所属类别. 这个可以暂时不用理.  b6决定当前的TLV数据是一个单一的数据和复合结构的数据. 复合的TLV是指value域里也包含一个或多个TLV, 类似嵌套的编码格式. b5~b1如果全为1,则说明这个tag下面还有一个子字节. 占两个字节, 否则tag占一个字节。

长度:

  长度(即L本身)的属性也为bit,占1~3个字节长度。具体编码规则如下:

  a)当L字段最左边字节的最左bit位(即bit8)为0,表示该L字段占一个字节,它的后续7个bit位(即bit7~bit1)表示取值的长度,采用二进制数表示取值长度的十进制数。

  b)当L字段最左边字节的最左bit位(即bit8)为1,表示该L字段不止占一个字节,那么它到底占几个字节由该最左字节的后续7个bit位(即bit7~bit1)的十进制取值表示。例如,若最左字节为10000010,表示L字段除该字节外,后面还有两个字节。其后续字节的十进制取值表示取值的长度。

银联卡QPBOC处理流程及数据分析。。。

银联卡处理

交易金额确定

检查IC卡参数

选择QPBOC目录

AID选应用:

send:00A404000E 325041592E5359532E4444463031

recv:

6F 30//FCI模板

84 0E 325041592E5359532E4444463031

A5 1E //FCI专有模板

BF0C 1B//模板,文件控制信息(FCI)专有数据

61 19//模板

4F 08 A000000333010101//应用标示符(AID)

50 0A 50424F43204445424954//应用标签

87 01 01//应用优先指示器

9000

卡片校验

终端IC卡参数检查

rcode=0x00

选择ICPParm.TVL9F06

AID选应用:

send:00A4040008 A000000333010101

recv:

6F 36//FCI模板

84 08 A000000333010101//专有(DF)文件名称

A5 2A //FCI专有模板

50 0A 50424F43204445424954//应用标签

87 01 01//应用优先指示器

9F38 18 //处理选项数据对象列表PDOL

//PDOL中的标签

9F66 04//终端交易属性

9F02 06 //授权金额

9F03 06 //其他金额

9F1A 02 //国家代码

95 05 //终端验证结果TVR

5F2A 02//交易货币代码

9A 03 //交易日期

9C 01//交易类型

9F37 04//不可预知数

9000

 

rcode=0x9000

交易扣钱

读取余额

send:80CA9F7900

recv:9F79 06 000000000076 9000

 

GPO前准备工作

 

发送GPO命令

send:80A80000238321

2A000000//PDOL中的终端交易属性9F66

000000000001 //授权金额

000000000000 //其他金额

0156//国家代码

0000000000//终端验证结果TVR

0156//交易货币代码

131111//交易日期

00//交易类型

35383F5B//不可预知数

00

recv:

77 5A//模板

82 02 7C00 //应用交互特征AIP

 

9F36 02 0075//应用交易计数器ATC

9F10 13 07010103900000010A010000000075C5B41C32//发卡行应用数据

9F26 08 B5D1C169FA969D76//应用密文AC

9F6C 02 0000

57 13 6214834270000244D22102200484900826610F//磁条2等效数据,卡BIn

5F34 01 00//应用PAN序列号

94 10//应用文件定位器(AFL)

10 03 04 00  //读取文件10的第3条到第4条记录

10 09 0B 01 //读取文件10的第9条到0B条,即09,0A,0B

30 01 01 00 //读取文件30的第1条

28 01 01 00//读取文件28的第1条

 

 

9000

 

TLV数据解析

 

卡bin号检查

 

根据AFL文件定位器读取相关文件

读取记录:

send:00B2031400

recv:7081B39081B0A33373F56850C06B1DE59D93F4F2A362CEA2A57C37D5DC78E3BF84914B608A43ACD22539B6C0491E88652244D2A199E6516D0C6F3C632F65202561106420FA406F530AE8D39CAF6EA5730E4A5AB15763FB42EAFA0AEE69A9E69640642E29CA15D5449B7AB74411A50EF811ACDEF4D8F93004C423E77E55AC263DA89308FCC05E3E0AA599565590C83CCE7FF6B17602F1BD7DB22C48A5A039FB97C48A8FA16083CC56DD6FEC3C6E7E81F37DCA25A949EC9000

读取记录:

send:00B2041400

recv:70488F0103920433DFA0159F3201039F4701039F482A7523A98A790DCBAAF8E3771B9584942288691B3813C5FBBFDF4BF06C2664A3B4DC1106E8CF90E96EFEC39F49039F37049F4A01829000

读取记录:

send:00B2091400

recv:70465F24032210315F25031210185A0862148342700002449F0702FF008E0C000000000000000042031E039F0D05D8609CA8009F0E0500100000009F0F05D8689CF8005F280201569000

读取记录:

send:00B20A1400

recv:708193938190794DDFB6EF2B5C8849C9900315CE0DB4F7E8F8BDEC674BEAE0BC19D50149316CF36337E62AE3E92F98A0300FD2DA8CEAE31FBEE5E7013CC3AB31EB9AA136659E53906E83C06421123A5DABF6A5B3D283E2AB0D8CCB598390D3F3DED42A8B3CB517BFC24BD52957EAD943DAC0EFA69C6843EAEE57EDC271854E357B8DB4C09C10D9375C349BCBD7818F699C7689C4B9A19000

 

 

读取记录:

send:00B20B1400

recv:7081949F46819079D536285A08A1E179FB62C23AD67D84A9F252E5540B0378EC25F9087DBFABA30F3BC7301A36E64271A3441051814FC3B21ABDB778223E2C8EFBCAA2C88EEA225AF7F8B2CA3E457EDB067DED077CB7909A72F7170CA43F80AB913384157FAADF400DF6E4E9A783FEBDDB780BF8886688CA32FE5363088AC951FB5DF0D33AF4F5B799D0441AFD821D876F1AD63A80C1809000

读取记录:

send:00B2013400

recv:70819D9F4B81906E550C4CFE23FE956BB65807531F77806154C8B073C229692D06E9560CAB83AAD2F2FCB83E715A5392B3D820B288F693CDF5EED96B7339059C05CA3EB2E183E48354D609757BD89D754C9F6D9795EB2B1F8808F0EC4F92BC42CDEDACAF4F414ABC0675F6BD973BFC152D22E6703BB65351D7C7A6D9154A91B41A3B9D146562F32A2A67EA6ED8ACB6D944668A6C7782149F5D060000000000759000

读取记录:

send:00B2012C00

recv:70099F74064543433030319000

 

脱机数据认证..

卡处理结束

 

脱机数据认证采用了一个三层的公钥证书方案。每一个IC卡公钥由它的发卡行认证,而认证中心认证发卡行公钥。这表明为了验证IC卡的签名,终端需要先通过验证两个证书来恢复和验证IC卡公钥,然后用这个公钥来验证IC卡的动态签名。 

 

1.通过从用户卡获取的索引和RID,终端能够确认并取得存放在终端的认证中心公钥的模,指数和与密钥相关的信息,以及将使用的相应算法。如果终端没有存储与这个索引及RID相关联的密钥,那么脱机数据认证失败 ;

2.用认证中心公钥对从用户卡获取的发卡行公钥证书中恢复出发卡行公钥,并进行格式及哈希校验;

3.用发卡行公钥对从用户卡获取的IC卡公钥证书中恢复出IC卡公钥,并进行格式及哈希校验;

4.用IC卡公钥对从用户卡获取的动态签名中恢复出动态数据,并进行格式及哈希校验;

完整指令和数据如下:

-----------------------------------------------------------------------------------------------------------
通用指令--选择QPBOC应用
00A404000E325041592E5359532E4444463031
6F30840E325041592E5359532E4444463031A51EBF0C1B61194F08A000000333010101500A50424F432044454249548701019000
-----------------------------------------------------------------------------------------------------------
通用指令--选择电子现金AID
00A4040008A000000333010101
6F548408A000000333010101A548500A50424F432044454249548701019F38189F66049F02069F03069F1A0295055F2A029A039C019F37045F2D027A689F1101019F120A50424F43204445424954BF0C059F4D020B0A9000
-----------------------------------------------------------------------------------------------------------
通用指令--读电子现金余额
80CA9F7900
9F79060000000002479000
-----------------------------------------------------------------------------------------------------------
添加指令--GPO指令
80A800002383212A000000000000000001000000000000015600000000000156131111001915270200
7781DB82027C00940810020300180104019F360201C89F2608F60D0DF4E5AB42619F100F07110103900000010601000000024657136217876300000144401D22102201000029300F5F3401019F4B8180E3CF2D39C54236139C74D2D15D344491AF55B12D994E2A65945A3784FCCD6B6F613687A9F01E59AE958004683027686BF9876CDA9D931FA26B86A3FC0932B81438464969EAA75D1294D2D50EF25CCD854B7E8CECC8834EE2624658BAA78B9276DD829A82E538340C57330262F04DF5D488ACFE4AD5371478882BC53AF90A034E9F6C0200009F5D060000000002469000
-----------------------------------------------------------------------------------------------------------
添加指令--根据AFL读取记录
00B2031400
70379F3201039224FF3685821C5BCDDC1C8DD348084CF3AF6F5080BD4445D630BFA0006649EC3289E574BDC58F01039F4701039F49039F37049000
-----------------------------------------------------------------------------------------------------------
添加指令--
00B2021400
7081B39081B0551593050C8A8252F4C27289B1F48DA4C3B254318B58F863A1C8A6E5F8A0FE7C258AE433E5C90CABF09BEA86B106E849D360BE72FCC4CA6C9AC3E48464F2A3515D7649B5D55FCC5A4D56ECF40178ED36E6C6DAFBAC71C6DAFD9AF5EBB7F7298B422893D65AA9B325B1FA
-----------------------------------------------------------------------------------------------------------
D37081BFED1C0D3A4A2A3B6EF7E2AC7219345B376D3B6C42A3C7E00B92BAB2ED6CC575A288429000
-----------------------------------------------------------------------------------------------------------
添加指令--
00B2011C00
70425F24032210315A0A6217876300000144401F9F0702FF008E0C00000000000000005E031F009F0D05D8603CA8009F0E0500108000009F0F05D8683CF8005F280201569000
-----------------------------------------------------------------------------------------------------------
添加指令--
00B2021C00
70559F4A01828C1B9F02069F03069F1A0295055F2A029A039C019F37049F21039F4E148D1D8A029F02069F03069F1A0295055F2A029A039C019F37049F21039F4E149F420201565F300202209F080200205F25031210169000
-----------------------------------------------------------------------------------------------------------
添加指令--
00B2031C00
7081BD9F4681B08377E6C2F9CCA0E0D4831348875022E973FFF4B9A1D1485BD13BEADF8980064BC2DBB8AA942EDF4F656476B8E48A4D23B386D219473F3B37AA1947CD06615C330EC6E3A7ACD9FCD11D2A1EDAA099C2CA96F3D85CFAB6063DCD2C41B185DF734E6F24C78AC275AA810C84D472DAD6FFC81BB329DEB82ABB36CFF489DBD53D4FB76CFAE8F12B0FA089631206E362AEEF1FC6F1A7AF3B94B54759178146E6DBE0F8EE7B7CEC67D80D880D0789C5BA72657E9F74064543433030319000
-----------------------------------------------------------------------------------------------------------
添加指令--
00B2041C00
7081B39381B03083906618D04895A44F87F5896AC200BF5E9E96CAC576921F93F813C0C85E5680DCFEEEAB780277A5C87014C89C92B656BBCB929472FA4B45C9789BCB505454DC668B98156493314AD61DDF0EB4934CE6E3827E3D9BB0A10A3AA5ED0B2FD686446DBA89CDCCA4AB9EFDC776D627040BFAA2C18EF796E07D4053502927C57C8D6F51A3D4A1B6D7225D869147A520F922138FAE233FED1875F640D1AFF4480AB9B5EB9CDDE7BB15A1728C341BD253C54D9000
-----------------------------------------------------------------------------------------------------------
通用指令--读电子现金余额
80CA9F7900
9F79060000000002469000
-----------------------------------------------------------------------------------------------------------

 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

特立独行的猫a

您的鼓励是我的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值