hangzhoutong

6月份去杭州入手杭州通一张,跟@苗_条_肥_仔 学习一起测试杭州通。测试过程记录如下。

1.SELECT 选择MF
C-APDU: 00A4000002 3F00
R-APDU: 6F15840E315055422E5359532E4444463031A503880101  9000

不知道杭州通的入口名字,直接选择MF 3F00了。
解析一下TLV结构,6F是FCI模板,84后面是DF的名字“1PUB.SYS.DDF01”(感谢@智能卡技术 纠正),上电直接使用名字选择“1PUB.SYS.DDF01”也是可以成功的。A5是FCI专用数据,88是目录基本文件的SFI。

2.READ RECORD  读一下目录下的文件
C-APDU: 00B2010C00
R-APDU: 7011610F4F09A0000000038698070150023F01  9000 

解析TLV后,Tag 4F就是应用标识符AID: A00000000386980701,Tag 50是应用标签:3F01。

3.SELECT 选择AID
C-APDU: 00A4040009 A00000000386980701
R-APDU: 6F2E8409A00000000386980701A5219F0C1E847531000000000000003100310000002045887820140614206406140000 9000 
响应是电子存折/钱包规范中SELECT ADF的响应,解析TLV Tag 9F0C是发卡行自定义数据,数据域用蓝色标注出来了,数据的意义没有研究。

4.GET BALANCE 先查下余额
C-APDU: 805C000204
R-APDU: 00000F44 9000

余额是F44,就是39.08元

5.READ RECORD 读交易明细
C-APDU: 00B201C417
R-APDU: 00080000000000016C0931000102931320140614173611 9000

6.READ RECORD 继续读明细
C-APDU: 00B202C417
R-APDU: 0007000000000000000931000102916220140614171645 9000

7.READ RECORD 继续读明细
C-APDU: 00B203C417
R-APDU: 0006000000000000B60931000102916620140614154024 9000

8.READ RECORD 继续读明细
C-APDU: 00B204C417
R-APDU: 0005000000000000000931000102901320140614151910 9000

9.READ RECORD 继续读明细
C-APDU: 00B205C417
R-APDU: 0004000000000000B60931000102902120140614140953 9000

10.READ RECORD 继续读明细
C-APDU: 00B206C417
R-APDU: 0003000000000000000931000102907920140614140031 9000

11.READ RECORD 继续读明细
C-APDU: 00B207C417
R-APDU: 0002000000000000B60931000102907220140614085525 9000

12.READ RECORD 继续读明细
C-APDU: 00B208C417
R-APDU: 0001000000000000000931000102911420140614084815 9000

13.READ RECORD 继续读明细
C-APDU: 00B209C417
R-APDU: 6A83

5~13条指令一直在读交易记录,直到返回6A83,一共读出了8条交易记录,感谢@苗_条_肥_仔 给的日志格式,我这边还在PBOC的文档上找呢。
看数据很明显前两字节表示交易的序号(当然也许是第二字节,但是一个字节表示有些短啊)。
继续很明显的容易知道,数据域的最后7字节表示交易时间格式是YYYY-MM-DD-HH-MM-SS。
比如第12条命令的响应数据中可以知道,这张卡片的第一次交易发生在2014年6月14日8点48分15秒,这个跟我购买卡片的时间对上了,我是是差不多在那个时候在杭州地铁城站站上车的。
这8条记录,是记录了在杭州地铁的进出站信息,没有公交车乘车信息,第8~9字节是消费金额,当然出站才有金额,最后一次好像是南宋御街那边的定安路站做到杭州东站,要3块多钱,好贵啊。
后面的几个字节是终端的编号,手里小票上地铁圈存机的编号就是0108xxxx这样的格式。

14.READ BINARY 读公共应用基本数据文件
C-APDU: 00B095001E
R-APDU: 847531000000000000003100310000002045887820140614206406140000 9000 

响应数据符合ED和EP应用的公共应用基本数据文件的格式,并且跟我的充值小票上的信息吻合。
解析一下:
84 75 31 00 00 00 00 00 00 00 31 00 31 00 00 00 20 45 88 78 20 14 06 14 20 64 06 14 00 00
84 75 31 00 00 00 00 00 是发卡方标识 
00 是应用类型标识,表示保留
00 是发卡方应用版本
31 00 31 00 00 00 20 45 88 78 是应用序列号 --这个和充值小票的应用序列号相符
20 14 06 14 是应用启用日期 --这个的确是购卡日期
20 64 06 14 是应用有效日期 --50年有效期?
00 00 是 发卡文自定义FCI数据

15.READ BINARY 读0x05文件
C-APDU: 00B0850000
R-APDU: 1700002099010101E0000000000000000000000000000000000000000000000000000000000000000000000000000000 9000
16.READ BINARY 读0x15文件
C-APDU: 00B0950000
R-APDU: 847531000000000000003100310000002045887820140614206406140000 9000
--------------------- 
作者:詹天佐 
来源:CSDN 
原文:https://blog.csdn.net/youngbug/article/details/39400215 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值