利用DEBUG恢复数据库文件

Author: 重庆 冯中明 Date: 1995-04-14

        1.设损坏库文件名ERROR.DBF,将损坏库文件拷贝作备份即:
        C〉COPY ERROR.DBF AERROR.DBF
        2.C〉DEBUG ERROR.DBF
        -R CX
        XXX0
        -R BX
        XXX1;以上两步是将文件长度值转化为16进制数值。
        -S 100 (XXX0+XXX1) 00
        XXX2;(记该值为A1)
        3.求库结构字段个数及每个字段的长度
        利用-D 100 A1查询 100+(2i+1)×10地址处的16进制值;记下所有的值,并将其转化为10进制数,记各字段长度为x1,x2,x3,...,xn。其中I为1,2,3,…直到100+(2i+1)×10≤A1。
        令Y=x1+x2+...+xn;Z=(n+1)×32+1(Y为数据库字段和,Z为空库文件长度)。
        4.求记录个数
        利用公式:记录长度=(待修复库文件长度-Z)/(Y+1),令其为B。
        5.将B、V转化成16进制,分别记为B1、Y1。
        6.C〉DEBUG ERROR.DBF
        利用-E104,E105,E106,E107依次将其修改成B1对应值(注意低位字节在前,高位字节在后)。
        利用-E108,E109将其值分别修改成Y1对应值。
        -S 100 (XXX0+XXX1) 1A
        XXX3
        -E XXX3
        XXXX:XXX3 1A,00
        -W
        -Q
        7.进入数据库系统,利用USE ERROR
        BROW
        可以发现所有记录全都恢复了!综上所述,可以看到,它既给我们提供了一起恢复数据文件的方法,也为我们提供了一种对数据库文件加密的方法,有兴趣的朋友可以逆着上述步骤返回去,便可以得到验证结果。
        上述方法DBASEⅢ、FOXBASE+数据库系统和PC/XT、AT,AST 386/33上通过。本方法也可用PCTOOLS(PCSHELL)来实现。(重庆  冯中明)