EMV/PBOC 解析(二) 卡片數據讀取


  上一篇簡單的了解了IC智能卡的文件結構和APDU報文,這篇我們直接來讀取卡內的數據。下面我們主要參照《中國金融集成電路(IC)卡規范》。

  好了廢話不多說,下面貼指令:

(1)卡片接收一個來自終端的選擇(SELECT)命令,請求選擇 PSE(文件名“1PAY.SYS.DDF01”);

    選擇支付系統 PSE-1PAY.SYS.DDF01,在這里是規范規定的PSE的文件名為“1PAY.SYS.DDF01”

->00a404000E315041592E5359532E4444463031

結果->

6F 26

        84   (DF名稱)                        0E                       315041592E5359532E4444463031

        A5   (FCI數據專用模板)    14(長度)

                 88   (目錄基本文件的SFI)  01(長度) 01

                 5F2D (語言選擇)           02         7A68

                 9F11 (發卡行代碼表索引)   01         01

                 BF0C (發卡行自定義數據FCI)05         9F4D020B0A

 9000 (SW1 SW2)

(2) GETDATA 獲取數據

指令->00B2010C

結果->

70   28

61   26

4F   08     A000000333010101(AID) 

50   0A     50424F43204445424954

9F12 0A    50424F43204445424954

87   01     01

9000

(3)根據AID=A000000333010101選擇文件 獲取ADF  FCI

指令->00A4040008A000000333010101 //根據AID=A000000333(RID) 010101(認證中心公鑰索引PKI)

結果->

6F   45

84   08 A000000333010101

A5   39

50   0A 50424F43204445424954(應用標簽)

87   01  01

9F38  09  9F7A01 9F0206 5F2A02   //處理選項數據對象列表(PDOL)

*在應用初始化步驟,卡片在處理 GPO 命令時需要由終端提供的數據元的標識和、長度列表

5F2D  02  7A68

9F11  01  01

9F12 0A 50424F43204445424954(應用優先名稱)

BF0C 05 9F4D020B0A

9000

(4)這里便可以讀取電子現金余額等信息

例如:

指令->80CA9F79     /9F79:電子現金余額

結果 ->

9F79 06 000000000000 9000  //余額:00.00元

|----------------------------------------------|

|       9F6D:電子現金重置閾                       |

|       9F77:電子現金余額上線                    |

|       9F78:電子現金單筆交易限額              |

|       9F5D:脫機可用余額                         |

|       9F6B:讀取卡片 CVM 限額                 |

|---------------------------------------------|

 

(5)下面就是比較關鍵的一步GPO的操作

首先需要用到步驟(3)可以獲取到處理選項數據對象列表(PDOL)

PDOL:

9F7A01 (電子現金終端指示器): 01

9F0206 (授權金額):000000000000

5F2A02 (交易貨幣代碼):0156

 

指令->80A800000B8309010000000000000156

結果->

80 16 7C00 (應用交互特征AIP)

08010200  (AFL應用文件定位器)

10040601  (AFL應用文件定位器)

18010200  (AFL應用文件定位器)

20010100  (AFL應用文件定位器)

28010100  (AFL應用文件定位器)

9000

[

********

7C00(應用交互特征AIP)  => 7C[0(bit8) 1(bit7) 1(bit6) 1(bit5) 1(bit4) 1(bit3) 0(bit2) 0(bit1)]00

 bit8=0  規范說1=RFU

 bit7=1 支持SDA 

 bit6=1 支持DDA 

 bit5=1 支持持卡人認證

 bit4=1 執行終端風險管理 

 bit3=1 支持發卡行認證 

 bit2=0 0=RFU 

 bit1=0 不支持CDA 

 第2字節 RFU=0

*********]

 

(6)下面是根據AFL讀取文件,首先來解析下AFL

以第一個AFL為例: 08(SFI)01(第一個要讀出的記錄號) 02(最后一個要讀出的記錄號)00(存放用於脫機數據認證的數據的連續記錄個數)

下面解析 SFI: 08

  1. 16進制轉為2進制的數據 -> 0000 1000

  2. 加 0000 0100 ->0000 1100

  3. 轉為16進制 -> 0c

根據AFL讀取文件:

指令 ->00B2010C

結果 ->

70 2B

57(二磁道等價數據)    12

62***********414(卡號,這里涉及到隱私就不貼出來了) D2411(有效日期 年/月 24/11) 22000000200000 F(補足)

9F1F(磁道一自定義數據) 14 3*3*3*3*3*30303030303*3*3*303032303*3*3* (一般存放的是身份證信息,但是有的銀行是不存放的)

指令->00B2020C00

結果->

70(模板)  09 5F20(持卡人姓名) 02 2020(有的銀行是存放的是姓名的拼音的ACII碼,但是PBOC3.0建議不要存放私人信息) 9F62(證件類型) 01 00(身份證)

其它的AFL就不一一贅述了,有理解不正確的地方還請指正。

轉載請注明出處  http://www.cnblogs.com/xinwang/p/4283671.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM