使用WINHEX解析DBF数据库文件结构
2013-11-27 18:08:05 来源:华军科技数据恢复
我们知道一个文件在磁盘上的储存包括三部分:目录区、文件分配表、数据区。
对于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保留区,以自己掌握的密码形式存放。