智能卡 复旦卡 电子钱包圈存

在之前的开卡实验的基础上继续开卡:

https://blog.csdn.net/wowocpp/article/details/80018122

SmartCard Reader Cnt dw =1,
i=0,Gemplus USB Smart Card Reader 0
Gemplus USB Smart Card Reader 0
连接读卡器: Gemplus USB Smart Card Reader 0
通讯协议: T0

1,外部认证

Send Data : 00 84 00 00 04
Recv Data : 73 66 BE 39 90 00
Send Data : 00 82 00 00 08 9C A5 30 B8 D3 81 CB F0
Recv Data : 90 00

2,选择MF

Send Data : 00 A4 00 00 00
Recv Data : 61 17
Send Data : 00 C0 00 00 17
Recv Data : 6F 15 84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 03 88 01 01 90 00

3,创建3F01目录失败

Send Data : 80 E0 3F 01 11 38 03 6F F0 F0 95 FF FF A0 00 00 00 03 86 98 07 01
Recv Data : 69 82

4,再次外部认证

Send Data : 00 84 00 00 04
Recv Data : F3 6F 75 46 90 00
Send Data : 00 82 00 00 08 8F 82 A0 24 59 65 55 53
Recv Data : 90 00

5,创建3F01目录成功

Send Data : 80 E0 3F 01 11 38 03 6F F0 F0 95 FF FF A0 00 00 00 03 86 98 07 01
Recv Data : 90 00

6,选择3F01目录

Send Data : 00 A4 00 00 02 3F 01
Recv Data : 61 0D
Send Data : 00 C0 00 00 0D
Recv Data : 6F 0B 84 09 A0 00 00 00 03 86 98 07 01 90 00

7,创建密钥文件,位于3F01目录下面

Send Data : 80 E0 00 00 07 3F 01 8F 95 F0 FF FF
Recv Data : 90 00

8,装载密钥 到密钥文件

Send Data : 80 D4 01 00 15 34 F0 02 00 01 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
Recv Data : 90 00
Send Data : 80 D4 01 00 15 36 F0 02 FF 33 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
Recv Data : 90 00
Send Data : 80 D4 01 00 15 37 F0 02 FF 33 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
Recv Data : 90 00
Send Data : 80 D4 01 00 15 38 F0 02 FF 33 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
Recv Data : 90 00
Send Data : 80 D4 01 00 15 39 F0 02 44 33 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
Recv Data : 90 00
Send Data : 80 D4 01 01 15 3E F0 02 00 01 3E 01 3E 01 3E 01 3E 01 3E 01 3E 01 3E 01 3E 01
Recv Data : 90 00
Send Data : 80 D4 01 02 15 3E F0 02 00 01 3E 02 3E 02 3E 02 3E 02 3E 02 3E 02 3E 02 3E 02
Recv Data : 90 00
Send Data : 80 D4 01 01 15 3F F0 02 00 01 3F 01 3F 01 3F 01 3F 01 3F 01 3F 01 3F 01 3F 01
Recv Data : 90 00
Send Data : 80 D4 01 02 15 3F F0 02 00 01 3F 02 3F 02 3F 02 3F 02 3F 02 3F 02 3F 02 3F 02
Recv Data : 90 00
Send Data : 80 D4 01 01 15 3D F0 02 01 00 3D 01 3D 01 3D 01 3D 01 3D 01 3D 01 3D 01 3D 01
Recv Data : 90 00
Send Data : 80 D4 01 02 15 3D F0 02 01 00 3D 02 3D 02 3D 02 3D 02 3D 02 3D 02 3D 02 3D 02
Recv Data : 90 00
Send Data : 80 D4 01 01 15 3C F0 02 01 00 3C 01 3C 01 3C 01 3C 01 3C 01 3C 01 3C 01 3C 01
Recv Data : 90 00
Send Data : 80 D4 01 02 15 3C F0 02 01 00 3C 02 3C 02 3C 02 3C 02 3C 02 3C 02 3C 02 3C 02
Recv Data : 90 00
Send Data : 80 D4 01 00 0D 3A F0 EF 01 33 12 34 5F FF FF FF FF FF
Recv Data : 90 00

9,创建15号文件(二进制文件)建立二进制文件(线路保护读写)

Send Data : 80 E0 00 15 07 A8 00 1E F0 F0 FF FF
Recv Data : 90 00

10 ,创建16号文件(二进制文件)

Send Data : 80 E0 00 16 07 A8 00 27 F0 F0 FF FF
Recv Data : 90 00

11 ,创建17号文件(二进制文件)

Send Data : 80 E0 00 17 07 28 05 DC F0 F0 FF FF
Recv Data : 6A 84

12 ,创建18号文件(循环文件)

Send Data : 80 E0 00 18 07 2E 0A 17 F0 EF FF FF
Recv Data : 90 00

13 ,创建钱包文件(电子存折)

Send Data : 80 E0 00 01 07 2F 02 08 F1 00 FF 18
Recv Data : 90 00

14 ,创建钱包文件(电子钱包)

Send Data : 80 E0 00 02 07 2F 02 08 F0 00 FF 18
Recv Data : 90 00

验证PIN码:

Send Data : 00 84 00 00 04
Recv Data : 56 14 5E 12 90 00

Send Data : 00 82 00 00 08 8E 69 F2 24 E5 4B A7 B4
Recv Data : 90 00

Send Data : 00 A4 00 00 02 3F 01
Recv Data : 61 34
Send Data : 00 C0 00 00 34
Recv Data : 6F 32 84 09 A0 00 00 00 03 86 98 07 01 A5 25 9F 08 01 02 9F 0C 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00

Send Data : 00 20 00 00 03 12 34 5F
Recv Data : 90 00

80 50 00 02 0B 01 00 00 12 34 00 00 00 00 00 01 10

初始化圈存

重新插拔卡片:

Gemplus USB Smart Card Reader 0
连接读卡器: Gemplus USB Smart Card Reader 0
通讯协议: T0

外部认证

Send Data : 00 84 00 00 04
Recv Data : 0A F3 B2 B5 90 00
Send Data : 00 82 00 00 08 D8 9D DB 8F 53 F5 08 19
Recv Data : 90 00

进入目录3F01

Send Data : 00 A4 00 00 02 3F 01
Recv Data : 61 34
Send Data : 00 C0 00 00 34
Recv Data : 6F 32 84 09 A0 00 00 00 03 86 98 07 01 A5 25 9F 08 01 02 9F 0C 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00

校验pin码

Send Data : 00 20 00 00 03 12 34 5F
Recv Data : 90 00

读余额

Send Data : 80 5C 00 01 04
Recv Data : 00 00 00 00 90 00

初始化圈存

Send Data : 80 50 00 02 0B 01 00 00 12 34 00 00 00 00 00 01
Recv Data : 61 10
Send Data : 00 C0 00 00 10
Recv Data : 00 00 00 00 00 00 00 01 2F 73 55 FC 5F C1 AE E4 90 00

圈存:

Send Data : 80 52 00 00 0B 20 18 04 25 15 59 22 25 41 D8 44
Recv Data : 61 04
Send Data : 00 C0 00 00 04
Recv Data : 0E C7 8E 36 90 00

读余额

Send Data : 80 5C 00 02 04
Recv Data : 00 00 12 34 90 00

说明圈存成功了

80 50 00 02 0B 01 00 00 12 34 00 00 00 00 00 01

CLAINSP1P2LC密钥标识符交易金额终端机编号
805000020B0100 00 12 3400 00 00 00 00 01

密钥标识01 交易金额 00001234 终端机编号 000000000001
这里写图片描述

返回16个字节:
这里写图片描述

00 00 00 0000 0000012F 73 55 FC5F C1 AE E4
卡片余额交易序号密钥版本号算法标识随机数MAC1

这里写图片描述

21, 圈存密钥 圈存密钥01

80 D4 01 01 15 3F F0 02 00 01 3F 01 3F 01 3F 01 3F 01 3F 01 3F 01 3F 01 3F 01

内部密钥的装载:
80 D4 01 00 15 34 F0 02 00 01 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
这里写图片描述

装载不同的消费密钥根据密钥版本号来区分,CPU卡中消费密钥密钥版本要和PSAM卡中密钥版本相同

还有算法标识

00-3DES

01-DES

02-255保留

注意:消费密钥的密钥版本是在消费过程中标识密钥版本,其他的密钥的密钥版本作为密钥标识使用

校验一下 MAC1:

2F 73 55 FC00008000 (8bytes)
随机数交易序号填充数据

inputdata: 2F7355FC00008000

LoadKey = 3F013F013F013F013F013F013F013F01

SessionKey = 3DES_Enypt(InputData, LoadKey) = D1C6AEAD4E49990F

用LoadKey对InputData 做3DES加密得到D1C6AEAD4E49990F
这里写图片描述

密钥: 3F013F013F013F013F013F013F013F01
数据: 2F7355FC00008000
加密: D1C6AEAD4E49990F

2.计算MAC1(4字节)

0000000000 00 12 340200 00 00 00 00 01
卡片余额交易金额交易类型终端机编号

密钥 : D1C6AEAD4E49990F
初始向量: 0000000000000000
InputData1 : 000000000000123402000000000001

计算MAC1值:
5FC1AEE43854A977

这里写图片描述

验证正确:

计算MAC2
00 00 12 340200 00 00 00 00 0120180425155922
交易金额交易类型终端机编号交易日期交易时间

InputData2=000012340200000000000120180425155922

密钥: D1C6AEAD4E49990F
初始向量: 0000000000000000
数据 : 000012340200000000000120180425155922
计算MAC: 2541D84488CC8BB0
取前4个字节:
MAC2 = 2541D844

发送圈存命令:

这里写图片描述

Apdu:

CLAINSP1P2LC交易日期交易时间MAC2
805200000B201804251559222541D844

80 52 00 00 0B 20180425 155922 2541D844

发送之后得到回应:
Send Data : 80 52 00 00 0B 20 18 04 25 15 59 22 25 41 D8 44
Recv Data : 61 04
Send Data : 00 C0 00 00 04
Recv Data : 0E C7 8E 36 90 00

这里写图片描述

TAC : 0EC78E36 :
进行校验:

内部密钥为:34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
TacKey.Left(8) = 3434343434343434
TacKey.Right(8) = 3434343434343434
XOR 结果 = 0000000000000000

00 00 12 34000000 00 12 340200 00 00 00 00 0120180425155922
新余额交易序号旧交易金额交易类型终端机编号交易日期交易时间

InputData3=000012340000000012340200000000000120180425155922

密钥: 0000000000000000
初始向量: 0000000000000000
数据: 000012340000000012340200000000000120180425155922
计算MAC : 0EC78E36AB07F7FF

TAC : 0EC78E36 :

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值