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

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

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

CLA INS P1 P2 LC 密钥标识符 交易金额 终端机编号
80 50 00 02 0B 01 00 00 12 34 00 00 00 00 00 01

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

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

00 00 00 00 00 00 00 01 2F 73 55 FC 5F 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 FC 0000 8000 (8bytes)
随机数 交易序号 填充数据

inputdata: 2F7355FC00008000

LoadKey = 3F013F013F013F013F013F013F013F01

SessionKey = 3DES_Enypt(InputData, LoadKey) = D1C6AEAD4E49990F

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

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

2.计算MAC1(4字节)

00000000 00 00 12 34 02 00 00 00 00 00 01
卡片余额 交易金额 交易类型 终端机编号

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

计算MAC1值:
5FC1AEE43854A977

这里写图片描述

验证正确:

计算MAC2

00 00 12 34 02 00 00 00 00 00 01 20180425 155922
交易金额 交易类型 终端机编号 交易日期 交易时间

InputData2=000012340200000000000120180425155922

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

发送圈存命令:

这里写图片描述

Apdu:

CLA INS P1 P2 LC 交易日期 交易时间 MAC2
80 52 00 00 0B 20180425 155922 2541D844

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 34 0000 00 00 12 34 02 00 00 00 00 00 01 20180425 155922
新余额 交易序号旧 交易金额 交易类型 终端机编号 交易日期 交易时间

InputData3=000012340000000012340200000000000120180425155922

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

TAC : 0EC78E36 :

这里写图片描述

阅读更多

更多精彩内容