❶ CPU卡如何建立文件
一般來說,對存儲卡和邏輯加密卡操作,使用接觸式IC卡通用讀寫器;對CPU卡使用CPU卡讀寫器。所謂「通用讀卡器」是指它可以對大多數流行的存儲卡和邏輯加密卡操作。而CPU卡由於有ISO/IEC 7816.3/4的規范,其通訊協議、命令格式都是兼容的,被看作是一種卡。當然,也有將「通用讀卡器」與CPU讀卡器二合一的真正的接觸式通用讀卡器。
PC端IC卡應用軟體編程,要點是了解卡的數據結構和調用讀卡器函數。在這方面,非CPU卡與CPU卡有不小差別。
首先,非CPU卡,你必須熟悉卡的存儲結構,哪裡是製造商區,哪裡是密碼區,哪裡是數據控制區,哪裡是數據區(應用區)……;而CPU卡,你不必關心數據的地址,卻要關注文件系統的結構:主文件(MF,相當於DOS文件系統的根目錄)、專用文件(DF,相當於DOS文件系統的目錄,可以有多層)、基本文件(EF,相當於DOS文件系統的文件)。
CPU卡的基本文件類型雖然只有透明(二進制)文件、(定長與不定長)線性記錄文件和循環記錄文件三類,但由於COS內部控制的需要,派生出一些特定的「變種」——復位應答文件、口令文件、密鑰文件、DIR文件、SFI文件……。這些都需要熟悉。
純粹的存儲卡是可以自由讀取的;非CPU邏輯加密卡的訪問控制,需要掌握特定的卡的口令控制、認證控制、特定的數據控制標志位元組和卡的熔絲(一種卡上這些控制不一定都有)。
而CPU卡的訪問控制,是在建立文件時定義的,讀、寫、更改分別是否需要認證,用哪個密鑰,是否需要口令,是否需要MAC驗證等等。需要說明的是,創建文件命令的格式是隨COS而不同的。所以,你必須熟讀他的COS手冊。
現在說說卡操作。非CPU卡的訪問一般是通過調用函數直接完成的,大不了需要熟悉一下調用參數。而CPU卡除了設備命令(測卡、上下電、選卡座等)和卡的復位命令以外,所有卡命令都是通過一個通用的命令函數執行的,所以你需要熟悉COS手冊的命令。
COS的卡操作命令有統一的格式:CLA(命令類別Class)、INS(命令指令Instruction)、P1(參數1)、P2(參數2)、Lc(命令數據域Data長度)、Data和Le(應答數據域長度)。命令域中除了Data,都是1位元組十六進制數。數據域則是十六進制數串,可以是二進制數、BCD碼或文字的ASCII碼等等。這有點像匯編語言。調用命令函數時,把命令串代入對應參數即可。
最後,給初學者一點建議。
1. 最權威的書:王愛英的《智能卡技術 —IC卡—》第二版 清華大學出版社 29元
2. 初學非CPU卡編程,要仔細閱讀卡的技術說明和讀卡器函數的調用說明及例子。特別要注意一些細節。例如,有人練習調用函數讀寫4428卡時,誤寫了密碼區,使得自己也不知道密碼了,最終就是驗證密碼超過允許次數而毀卡。還有一個初學者,試用4442卡密碼驗證,沒有注意到更改密碼後要下電再上電使卡復位,造成任何密碼都可以通過的假象,多次改、試之後,自己也不知道最終密碼了,後果是拔卡後再插卡多次不能通過密碼驗證而毀卡。初學者毀卡好象學騎自行車摔跤一樣,難免。但是細心的人走的彎路少些。
3. 由非CPU卡轉CPU卡編程,要熟悉文件系統的概念。另外就是注意練習時不要鎖死初始化功能。這樣,無論是鎖應用還是鎖卡,都可以重新初始化成新卡。
4. 學習IC卡編程,要充分利用好讀卡器廠家提供的演示程序。例如,在編程校驗密碼或認證失敗的時候,最好回到演示程序校驗或驗證,使其成功後將錯誤計數器復位,以免毀卡。編程中出現疑問時,也最好用演示程序驗證一下,判斷是否函數或讀卡器本身有問題,少走彎路。
5. 解決疑難最方便有效的方法當然是「問」。最好能有老鳥做技術支持。所以你一定要選擇能提供技術支持的公司的讀卡器。要是卡和讀卡器都出自一家就更方便了。