在之前的开卡实验的基础上继续开卡:
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
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
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
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
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
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
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
Send Data : 80 E0 00 00 07 3F 01 8F 95 F0 FF FF
Recv Data : 90 00
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
Send Data : 80 E0 00 15 07 A8 00 1E F0 F0 FF FF
Recv Data : 90 00
Send Data : 80 E0 00 16 07 A8 00 27 F0 F0 FF FF
Recv Data : 90 00
Send Data : 80 E0 00 17 07 28 05 DC F0 F0 FF FF
Recv Data : 6A 84
Send Data : 80 E0 00 18 07 2E 0A 17 F0 EF FF FF
Recv Data : 90 00
Send Data : 80 E0 00 01 07 2F 02 08 F1 00 FF 18
Recv Data : 90 00
Send Data : 80 E0 00 02 07 2F 02 08 F0 00 FF 18
Recv Data : 90 00
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
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
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
说明圈存成功了
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 |
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
验证正确:
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 :