我們知道一個文件在磁盤上的儲存包括三部分:目錄區、文件分配表、數據區。
對于FOXBASE的核心部分.DBF文件也不例外,DBF文件在數據區的結構又可分為三部分;文件頭描述區,字段結構描述區和數據描述區。
文文件頭描述區
包括數據庫參數區和記錄結構表區。數據庫參數區占32個字節:
1字節 數據庫開始標志(若數據庫含DBT文件為80H,否則為03H)
2-4字節 文件建立或修改的日期(YYMMDD 其中YY=日期-1900)
5-8字節 數據庫的記錄記錄數,低字節在前,高字節在后
9-10字節 文件結構說明區長度
11-12字節 每條記錄的總長度
12-32字節 保留
字段結構描述區
包括各字段參數,每個字段占32字節:
1-11字節 字段名
12 字段類型
13-14 首記錄中該字段對應內存地址的偏移量
15-16 首記錄中該字段對應內存地址的段地址
17 字段長度
18 字段小數位數
在所有記錄結構表區后是數據庫結構結束標志,其中 Foxbase 以0D結束,dBASE 以0D,00結束。
數據描述區
每條記錄按字段依次存放,沒有分隔符,也沒有終止符,每條記錄以刪除標志
20H開始,若該記錄被刪除,則該標志為2AH 即“*”。
數據庫的最后一個字節為結束標志1AH。
當新建庫未錄入數據時,無第三區和文件結束標志1AH,有記錄時,此區總長度=字段寬度總和×記錄個數,文件尾1AH標志在最后一個字節,數據按字段順序和寬度排列,每條記錄間用20H隔斷。當ZAP后,原1AH標志不變,新1AH標志寫在記錄起始偏移字節處,數據不刪除,但遇寫盤操作時,將會被覆蓋。
了解文件結構后,我們可以使用NORTON、PCTOOLS、DEBUG等工具按照本文中的一些方法對其加以利用,達到滿足某些特殊要求的目的。
例如:抓住目錄區的文件長、文件分配表的簇號分配鏈、文件頭的記錄個數值、數據推述區的1AH標志位置這四要素,就可以做到誤作ZAP后的手工數據恢復;又因能直接對字段名及其類型改寫,得以確保萬條記錄的安全轉換。目錄項適當修改后,整個文件就被隱形加密,還可以采用位移法把目錄項中的起始簇號、文件長、文件頭中的記錄個數、數據描述區的1A標志轉移到DOS保留區,以自己掌握的密碼形式存放。