天天看點

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存

在之前的開卡實驗的基礎上繼續開卡:

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

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存

傳回16個位元組:

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存
00 00 00 00 00 00 00 01 2F 73 55 FC 5F C1 AE E4
卡片餘額 交易序号 密鑰版本号 算法辨別 随機數 MAC1
智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存
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

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存

裝載不同的消費密鑰根據密鑰版本号來區分,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

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存

密鑰: 3F013F013F013F013F013F013F013F01

資料: 2F7355FC00008000

加密: D1C6AEAD4E49990F

2.計算MAC1(4位元組)

00000000 00 00 12 34 02 00 00 00 00 00 01
卡片餘額 交易金額 交易類型 終端機編号

密鑰 : D1C6AEAD4E49990F

初始向量: 0000000000000000

InputData1 : 000000000000123402000000000001

計算MAC1值:

5FC1AEE43854A977

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存

驗證正确:

計算MAC2

00 00 12 34 02 00 00 00 00 00 01 20180425 155922
交易金額 交易類型 終端機編号 交易日期 交易時間

InputData2=000012340200000000000120180425155922

密鑰: D1C6AEAD4E49990F

初始向量: 0000000000000000

資料 : 000012340200000000000120180425155922

計算MAC: 2541D84488CC8BB0

取前4個位元組:

MAC2 = 2541D844

發送圈存指令:

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存

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

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存

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 :

智能卡 複旦卡 電子錢包圈存驗證PIN碼:初始化圈存