www.pudn.com > hhdlock.rar > LOCKMAIN.C


//********************************************
//文件名:LOCKMAIN.C
//功能:1. 调用显示汉字函数
// 2. 调用字符处理函数
// 3. 调用读扇区汇编子程序
// 4. 调用写扇区汇编子程序
// 5. 建立扇区数据备份文件
// 6. 将扇区清零对硬盘实行加锁
// 7. 将数据写回扇区对硬盘实行解锁
//********************************************
#include<string.h> //1.
#include<stdio.h> //2.
#include<conio.h> //3.
#include<ctype.h> //4.
#include<stdlib.h> //5.
#include<fcntl.h> //6.
#include<io.h> //7.
#include<graphics.h> //8.
#include"port.h" //9.包含硬盘序列号头文件
#include"pw.h" //10.包含密钥头文件
extern RHD(int,int,int,int,char *); //11.声明读扇区汇编子程序
extern WHD(int,int,int,int,char *); //12.声明写扇区汇编子程序
int outhz(int,int,char *,int); //13.声明汉字显示函数
void finame(int,int); //14.声明字符处理函数
void jia(void); //15.声明加密函数
void jie(void); //16.声明解密函数
void copyf(void); //17.声明拷贝文件函数
void cle(void); //18.声明扇区清零函数
char name[13]; //19.
//20.
void main(int argc,char *argv[]) //21.带命令行参数的主函数
{ //22.
FILE *tmfp,*fp; //23.
char ch; //24.
char tmp[30]; //25.
char pwh[11]; //26.
int i,j,k,l; //27.
unsigned num=48059; //28.
long flag1,flag2,flag3; //29.
unsigned long m; //30.
unsigned char s1,s2,s3,s4; //31.
char sh[21]; //32.
unsigned id; //33.
unsigned cw[257]; //34.
long port=135792468; //35.设定序列号基数
long pw=135798642; //36.设定密钥基数
extern char gsh[16]; //37.
int gdriver=DETECT,gmode; //38.
registerbgidriver(EGAVGA_driver); //39.
initgraph(&amt;gdriver,&amt;gmode,""); //40.
setbkcolor(0); //41.
cleardevice(); //42.
//43.
if(argc==1) //44.若命令行参数为1
strcpy(name,argv[0]); //45.
else //46.否则
{ //47.
strcpy(tmp,"多余的参数:"); //48.
strcat(tmp,argv[1]); //49.
setviewport(0,20,200,60,0); //50.
outhz(0,0,tmp,7); //51.调用汉字显示函数
outhz(0,20,"按任一键退出",7); //52.
getch(); //53.
closegraph(); //54.
exit(0); //55.
} //56.
m=0; //57.
outp(0x1f6,0xa0); //58.
outp(0x1f7,0xec); //59.
while(inp(0x1f7)!=0x58 &amt;&amt; m++<0xffff) //60.
; //61.
for(id=0;id!=256;id++) //62.
cw[id]=inpw(0x1f0); //63.
for(j=10,k=0;j<=19;j++) //64.
{ //65.
sh[k++]=(char)(cw[j]/256); //66.
sh[k++]=(char)(cw[j]>256); //67.
} //68.
sh[k]='\0'; //69.
l=strlen(sh); //70.
//71.
for(i=0;i<l;i++) //72.
{ //73.
srand(port); //74.
ch=rand(); //75.
hdport[i]=hdport[i]^ch; //76.
port++; //77.
} //78.
for(i=0;i<l;i++) //79.
{ //80.
if(sh[i]==hdport[i]) //81.硬盘序列号字符若相等
; //82.空操作
else //83.否则
{ //84.
setviewport(0,20,200,40,0); //85.
outhz(0,0,"非法用户!",14); //86.
remove(name); //87.
while(1) //88.
; //89.
} //90.
} //91.
//92.
if(num>0) //93.
; //94.
flag1=0; //95.
while(1) //96.
{ //97.
setviewport(0,20,200,40,0); //98.
outhz(0,0,"输入密钥:",7); //99.调用汉字显示函数
finame(90,20); //100.调用字符处理函数
strcpy(pwh,gsh); //101.
strcpy(pwh,strupr(pwh)); //102.字符串转大写
for(i=0;i<10;i++) //103.
{ //104.
srand(pw); //105.
ch=rand(); //106.
hdpw[i]=hdpw[i]^ch; //107.
pw=pw+7; //108.
} //109.
j=0; //110.
for(i=0;i<10;i++) //111.
{ //112.
if(pwh[i]==hdpw[i]) //113.密钥字符若相等
j++; //114.
else //115.否则
{ //116.
flag1=88; //117.
break; //118.
} //119.
} //120.
if(flag1==88) //121.
{ //122.
fp=fopen("hhdlock.exe","rb+"); //123.以添加方式打开文件
fseek(fp,2362,0); //124.移动文件指针
fread(&amt;id,2,1,fp); //125.读两个字节的值
if((id-48059)>=2) //126.
{ //127.
cleardevice(); //128.
setviewport(0,20,200,40,0); //129.
outhz(0,0,"非法用户!",14); //130.
remove(name); //131.
while(1) //132.
; //133.
} //134.
setviewport(0,40,200,100,0); //135.
outhz(0,0,"输入的密钥错误!",15); //136.
strcpy(tmp,"剩余的输入密钥的次数:"); //137.
i=2-(id-48059); //138.
itoa(i,pwh,10); //139.
strcat(tmp,pwh); //140.
outhz(0,20,tmp,15); //141.
id++; //142.
rewind(fp); //143.
fseek(fp,2362,0); //144.
fwrite(&amt;id,2,1,fp); //145.
fclose(fp); //146.
outhz(0,40,"按任一键退出",7); //147.
getch(); //148.
closegraph(); //149.
exit(0); //150.
} //151.
printf("\n"); //152.
if(j==10) //153.
{ //154.
id=48059; //155.
fp=fopen("hhdlock.exe","rb+"); //156.
fseek(fp,2362,0); //157.
fwrite(&amt;id,2,1,fp); //158.恢复原来的值
fclose(fp); //159.
break; //160.
} //161.
} //162.
//163.
m=63; //164.
tmfp=tmpfile(); //165.
fwrite(&amt;m,4,1,tmfp); //166.
rewind(tmfp); //167.
fread(&amt;s4,1,1,tmfp); //168.
fread(&amt;s3,1,1,tmfp); //169.
fread(&amt;s2,1,1,tmfp); //170.
fread(&amt;s1,1,1,tmfp); //171.
fclose(tmfp); //172.
tmpnam(tmp); //173.
RHD(s1,s2,s3,s4,tmp); //174.
flag1=0; //175.
fp=fopen(tmp,"rb"); //176.
for(i=0;i<=511;i++) //177.
{ //178.
ch=fgetc(fp); //179.
flag1+=ch; //180.
} //181.
fclose(fp); //182.
remove(tmp); //183.
m=64; //184.
tmfp=tmpfile(); //185.
fwrite(&amt;m,4,1,tmfp); //186.
rewind(tmfp); //187.
fread(&amt;s4,1,1,tmfp); //188.
fread(&amt;s3,1,1,tmfp); //189.
fread(&amt;s2,1,1,tmfp); //190.
fread(&amt;s1,1,1,tmfp); //191.
fclose(tmfp); //192.
tmpnam(tmp); //193.
RHD(s1,s2,s3,s4,tmp); //194.
flag2=0; //195.
fp=fopen(tmp,"rb"); //196.
for(i=0;i<=511;i++) //197.
{ //198.
ch=fgetc(fp); //199.
flag2+=ch; //200.
} //201.
fclose(fp); //202.
remove(tmp); //203.
m=65; //204.
tmfp=tmpfile(); //205.
fwrite(&amt;m,4,1,tmfp); //206.
rewind(tmfp); //207.
fread(&amt;s4,1,1,tmfp); //208.
fread(&amt;s3,1,1,tmfp); //209.
fread(&amt;s2,1,1,tmfp); //210.
fread(&amt;s1,1,1,tmfp); //211.
fclose(tmfp); //212.
tmpnam(tmp); //213.
RHD(s1,s2,s3,s4,tmp); //214.
flag3=0; //215.
fp=fopen(tmp,"rb"); //216.
for(i=0;i<=511;i++) //217.
{ //218.
ch=fgetc(fp); //219.
flag3+=ch; //220.
} //221.
fclose(fp); //222.
remove(tmp); //223.
if((flag1==0)&amt;&amt;(flag2==0)&amt;&amt;(flag3==0)) //224.
{ //225.
setviewport(0,40,200,80,0); //226.
outhz(0,0,"正在解锁,请稍等",10); //227.
jie(); //228.
outhz(0,40,"解锁成功",15); //229.
outhz(0,60,"按任一键退出",7); //230.
getch(); //231.
closegraph(); //232.
} //233.
else //234.
{ //235.
if((fp=fopen("data.hd","rb"))!=NULL) //236.检测文件名
{ //237.
fclose(fp); //238.
cleardevice(); //239.
setviewport(0,20,620,60,0); //240.
outhz(0,20,"[data.hd]文件已在当前" //241.
"目录中,请先将其删除或移走,再" //242.
"运行程序",7); //243.
outhz(0,40,"按任一键退出",7); //244.
getch(); //245.
closegraph(); //246.
exit(0); //247.
} //248.
setviewport(0,40,200,60,0); //249.
outhz(0,0,"正在加锁,请稍等",13); //250.
jia(); //251.
copyf(); //252.
cle(); //253.
setviewport(0,80,200,120,0); //254.
outhz(0,20,"加锁成功",15); //255.
outhz(0,40,"按任一键退出",7); //256.
getch(); //257.
closegraph(); //258.
} //259.
} //260.
char gsh[16]; //261.
//262.
void jia() //263.
{ //264.
FILE *tmfp,*hdfp,*fp; //265.
char h[512]; //266.
char tmp[13]; //267.
int i,j; //268.
int fat; //269.
unsigned long sec[120]; //270.
unsigned number=0; //271.
unsigned long k=0,m; //272.
unsigned long data1,data2; //273.
unsigned char s1,s2,s3,s4; //274.
char ch; //275.
//276.
hdfp=fopen("data.hd","ab+"); //277.以添加方式打开文件
tmfp=tmpfile(); //278.
fwrite(&amt;k,4,1,tmfp); //279.
rewind(tmfp); //280.
fread(&amt;s4,1,1,tmfp); //281.
fread(&amt;s3,1,1,tmfp); //282.
fread(&amt;s2,1,1,tmfp); //283.
fread(&amt;s1,1,1,tmfp); //284.
fclose(tmfp); //285.
tmpnam(tmp); //286.
RHD(s1,s2,s3,s4,tmp); //287.
sec[number]=k; //288.
number++; //289.
fp=fopen(tmp,"rb"); //290.
for(i=0;i<=511;i++) //291.
{ //292.
ch=fgetc(fp); //293.
fputc(ch,hdfp); //294.
} //295.
fseek(fp,470,0); //296.
fread(&amt;data1,4,1,fp); //297.读扇区数字段值
fseek(fp,450,0); //298.
fat=fgetc(fp); //299.读分区格式字段值
fclose(fp); //300.
remove(tmp); //301.
//302.
m=k=k+63; //303.
for(j=1;j<=5;j++) //304.
{ //305.
tmfp=tmpfile(); //306.
fwrite(&amt;k,4,1,tmfp); //307.
rewind(tmfp); //308.
fread(&amt;s4,1,1,tmfp); //309.
fread(&amt;s3,1,1,tmfp); //310.
fread(&amt;s2,1,1,tmfp); //311.
fread(&amt;s1,1,1,tmfp); //312.
fclose(tmfp); //313.
tmpnam(tmp); //314.
RHD(s1,s2,s3,s4,tmp); //315.
sec[number]=k; //316.
number++; //317.
fp=fopen(tmp,"rb"); //318.
for(i=0;i<=511;i++) //319.
{ //320.
ch=fgetc(fp); //321.
fputc(ch,hdfp); //322.
} //323.
fclose(fp); //324.
remove(tmp); //325.
k++; //326.
} //327.
if(fat==0x0b) //328.若是FAT32分区
{ //329.
k=m+32; //330.
for(j=1;j<=6;j++) //331.
{ //332.
tmfp=tmpfile(); //333.
fwrite(&amt;k,4,1,tmfp); //334.
rewind(tmfp); //335.
fread(&amt;s4,1,1,tmfp); //336.
fread(&amt;s3,1,1,tmfp); //337.
fread(&amt;s2,1,1,tmfp); //338.
fread(&amt;s1,1,1,tmfp); //339.
fclose(tmfp); //340.
tmpnam(tmp); //341.
RHD(s1,s2,s3,s4,tmp); //342.
sec[number]=k; //343.
number++; //344.
fp=fopen(tmp,"rb"); //345.
for(i=0;i<=511;i++) //346.
{ //347.
ch=fgetc(fp); //348.
fputc(ch,hdfp); //349.
} //350.
fclose(fp); //351.
remove(tmp); //352.
k++; //353.
} //354.
} //355.
if(data1==0) //356.
; //357.
else //358.
{ //359.
k=data1; //360.
while(1) //361.
{ //362.
tmfp=tmpfile(); //363.
fwrite(&amt;k,4,1,tmfp); //364.
rewind(tmfp); //365.
fread(&amt;s4,1,1,tmfp); //366.
fread(&amt;s3,1,1,tmfp); //367.
fread(&amt;s2,1,1,tmfp); //368.
fread(&amt;s1,1,1,tmfp); //369.
fclose(tmfp); //370.
tmpnam(tmp); //371.
RHD(s1,s2,s3,s4,tmp); //372.
sec[number]=k; //373.
number++; //374.
fp=fopen(tmp,"rb"); //375.
for(i=0;i<=511;i++) //376.
{ //377.
ch=fgetc(fp); //378.
fputc(ch,hdfp); //379.
} //380.
fseek(fp,470,0); //381.
fread(&amt;data2,4,1,fp); //382.
fseek(fp,450,0); //383.
fat=fgetc(fp); //384.
fclose(fp); //385.
remove(tmp); //386.
//387.
m=k=k+63; //388.
for(j=1;j<=5;j++) //389.
{ //390.
tmfp=tmpfile(); //391.
fwrite(&amt;k,4,1,tmfp); //392.
rewind(tmfp); //393.
fread(&amt;s4,1,1,tmfp); //394.
fread(&amt;s3,1,1,tmfp); //395.
fread(&amt;s2,1,1,tmfp); //396.
fread(&amt;s1,1,1,tmfp); //397.
fclose(tmfp); //398.
tmpnam(tmp); //399.
RHD(s1,s2,s3,s4,tmp); //400.
sec[number]=k; //401.
number++; //402.
fp=fopen(tmp,"rb"); //403.
for(i=0;i<=511;i++) //404.
{ //405.
ch=fgetc(fp); //406.
fputc(ch,hdfp); //407.
} //408.
fclose(fp); //409.
remove(tmp); //410.
k++; //411.
} //412.
if(fat==0x0b) //413.
{ //414.
k=m+32; //415.
for(j=1;j<=6;j++) //416.
{ //417.
tmfp=tmpfile(); //418.
fwrite(&amt;k,4,1,tmfp); //419.
rewind(tmfp); //420.
fread(&amt;s4,1,1,tmfp); //421.
fread(&amt;s3,1,1,tmfp); //422.
fread(&amt;s2,1,1,tmfp); //423.
fread(&amt;s1,1,1,tmfp); //424.
fclose(tmfp); //425.
tmpnam(tmp); //426.
RHD(s1,s2,s3,s4,tmp); //427.
sec[number]=k; //428.
number++; //429.
fp=fopen(tmp,"rb"); //430.
for(i=0;i<=511;i++) //431.
{ //432.
ch=fgetc(fp); //433.
fputc(ch,hdfp); //434.
} //435.
fclose(fp); //436.
remove(tmp); //437.
k++; //438.
} //439.
} //440.
if(data2==0) //441.
break; //442.
k=data1+data2; //443.
} //444.
} //445.
fclose(hdfp); //446.
} //447.
//448.
void copyf() //449.拷贝文件函数
{ //450.
FILE *fp; //451.
int i; //452.
char ch; //453.
unsigned l,u; //454.
char datahd[30720]; //455.
//456.
i=open("data.hd",O_CREAT); //457.
l=filelength(i); //458.
close(i); //459.
fp=fopen("data.hd","rb"); //460.
for(u=0;u<l;u++) //461.
datahd[u]=fgetc(fp); //462.
fclose(fp); //463.
while(1) //464.
{ //465.
setviewport(0,60,600,80,0); //466.
clearviewport(); //467.
setviewport(0,60,600,80,0); //468.
outhz(0,0,"是否将扇区数据文件拷贝" //469.
"到A盘(Y/N)?",7); //470.
ch=toupper(getch()); //471.
printf("\n"); //472.
if(ch==89) //473.
{ //474.
setviewport(0,60,600,80,0); //475.
clearviewport(); //476.
setviewport(0,60,600,80,0); //477.
outhz(0,0,"将软盘放入驱动器," //478.
"按任一键拷贝文件",7); //479.
getch(); //480.
fp=fopen("a:\\data.hd","wb"); //481.
for(u=0;u<l;u++) //482.
fputc(datahd[u],fp); //483.
fclose(fp); //484.
setviewport(0,60,600,80,0); //485.
clearviewport(); //486.
setviewport(0,60,600,80,0); //487.
outhz(0,0,"文件拷贝成功,按任" //488.
"一键继续运行程序",7); //489.
getch(); //490.
} //491.
if(ch==78) //492.
{ //493.
break; //494.
} //495.
} //496.
} //497.
//498.
void cle() //499.扇区清零函数
{ //500.
FILE *tmfp,*hdfp,*fp; //501.
char h[512]; //502.
char tmp[13]; //503.
int i,c; //504.
int fat; //505.
unsigned byte,number=0; //506.
unsigned long sec[120]; //507.
unsigned long k=0,m; //508.
unsigned long data1,data2; //509.
unsigned char s1,s2,s3,s4; //510.
//511.
hdfp=fopen("data.hd","rb"); //512.
tmpnam(tmp); //513.
fp=fopen(tmp,"wb+"); //514.
for(i=0;i<=511;i++) //515.
{ //516.
c=fgetc(hdfp); //517.
fputc(c,fp); //518.
} //519.
fseek(fp,470,0); //520.
fread(&amt;data1,4,1,fp); //521.
fseek(fp,450,0); //522.
fat=fgetc(fp); //523.
fclose(fp); //524.
remove(tmp); //525.
sec[number]=k; //526.
number++; //527.
m=k=k+63; //528.
for(i=1;i<=5;i++) //529.
{ //530.
sec[number]=k; //531.
number++; //532.
k++; //533.
} //534.
if(fat==0x0b) //535.
{ //536.
k=m+32; //537.
for(i=1;i<=6;i++) //538.
{ //539.
sec[number]=k; //540.
number++; //541.
k++; //542.
} //543.
} //544.
if(data1==0) //545.
; //546.
else //547.
{ //548.
k=data1; //549.
while(1) //550.
{ //551.
fseek(hdfp,512*(number),0); //552.
tmpnam(tmp); //553.
fp=fopen(tmp,"wb+"); //554.
for(i=0;i<=511;i++) //555.
{ //556.
c=fgetc(hdfp); //557.
fputc(c,fp); //558.
} //559.
fseek(fp,470,0); //560.
fread(&amt;data2,4,1,fp); //561.
fseek(fp,450,0); //562.
fat=fgetc(fp); //563.
fclose(fp); //564.
remove(tmp); //565.
sec[number]=k; //566.
number++; //567.
m=k=k+63; //568.
for(i=1;i<=5;i++) //569.
{ //570.
sec[number]=k; //571.
number++; //572.
k++; //573.
} //574.
if(fat==0x0b) //575.
{ //576.
k=m+32; //577.
for(i=1;i<=6;i++) //578.
{ //579.
sec[number]=k; //580.
number++; //581.
k++; //582.
} //583.
} //584.
if(data2==0) //585.
break; //586.
k=data1+data2; //587.
} //588.
} //589.
fclose(hdfp); //590.
//591.
i=open("data.hd",O_CREAT); //592.
byte=filelength(i); //593.
close(i); //594.
remove("data.hd"); //595.删除数据备份文件
byte=byte/512; //596.计算扇区数
for(i=0;i<=511;i++) //597.
{ h[i]=0; } //598.
for(number=0;number<byte;number++) //599.
{ //600.
tmfp=tmpfile(); //601.
fwrite(&amt;sec[number],4,1,tmfp); //602.
rewind(tmfp); //603.
fread(&amt;s4,1,1,tmfp); //604.
fread(&amt;s3,1,1,tmfp); //605.
fread(&amt;s2,1,1,tmfp); //606.
fread(&amt;s1,1,1,tmfp); //607.
fclose(tmfp); //608.
tmpnam(tmp); //609.
fp=fopen(tmp,"wb"); //610.
for(i=0;i<=511;i++) //611.
{ fputc(h[i],fp); } //612.
fclose(fp); //613.
WHD(s1,s2,s3,s4,tmp); //614.将扇区清零
remove(tmp); //615.
} //616.
} //617.
//618.
void jie() //619.解锁函数
{ //620.
FILE *tmfp,*hdfp,*fp; //621.
char ch; //622.
char tmp[13]; //623.
int i,c; //624.
int fat; //625.
unsigned byte,number=0; //626.
unsigned long sec[120]; //627.
unsigned long k=0,m; //628.
unsigned long data1,data2; //629.
unsigned char s1,s2,s3,s4; //630.
//631.
if((hdfp=fopen("data.hd","rb"))==NULL) //632.检测文件名
{ //633.
cleardevice(); //634.
setviewport(0,20,200,40,0); //635.
outhz(0,0,"文件[data.hd]在当前" //636.
"目录中没有找到!",7); //637.
outhz(0,20,"按任一键退出",7); //638.
getch(); //639.
closegraph(); //640.
exit(0); //641.
} //642.
tmpnam(tmp); //643.
fp=fopen(tmp,"wb+"); //644.
for(i=0;i<=511;i++) //645.
{ //646.
c=fgetc(hdfp); //647.
fputc(c,fp); //648.
} //649.
fseek(fp,470,0); //650.
fread(&amt;data1,4,1,fp); //651.
fseek(fp,450,0); //652.
fat=fgetc(fp); //653.
fclose(fp); //654.
remove(tmp); //655.
sec[number]=k; //656.
number++; //657.
m=k=k+63; //658.
for(i=1;i<=5;i++) //659.
{ //660.
sec[number]=k; //661.
number++; //662.
k++; //663.
} //664.
if(fat==0x0b) //665.
{ //666.
k=m+32; //667.
for(i=1;i<=6;i++) //668.
{ //669.
sec[number]=k; //670.
number++; //671.
k++; //672.
} //673.
} //674.
if(data1==0) //675.
; //676.
else //677.
{ //678.
k=data1; //679.
while(1) //680.
{ //681.
fseek(hdfp,512*(number),0); //682.
tmpnam(tmp); //683.
fp=fopen(tmp,"wb+"); //684.
for(i=0;i<=511;i++) //685.
{ //686.
c=fgetc(hdfp); //687.
fputc(c,fp); //688.
} //689.
fseek(fp,470,0); //690.
fread(&amt;data2,4,1,fp); //691.
fseek(fp,450,0); //692.
fat=fgetc(fp); //693.
fclose(fp); //694.
remove(tmp); //695.
sec[number]=k; //696.
number++; //697.
m=k=k+63; //698.
for(i=1;i<=5;i++) //699.
{ //700.
sec[number]=k; //701.
number++; //702.
k++; //703.
} //704.
if(fat==0x0b) //705.
{ //706.
k=m+32; //707.
for(i=1;i<=6;i++) //708.
{ //709.
sec[number]=k; //710.
number++; //711.
k++; //712.
} //713.
} //714.
if(data2==0) //715.
break; //716.
k=data1+data2; //717.
} //718.
} //719.
fclose(hdfp); //720.
//721.
i=open("data.hd",O_CREAT); //722.
byte=filelength(i); //723.
close(i); //724.
byte=byte/512; //725.
hdfp=fopen("data.hd","rb"); //726.
for(number=0;number<byte;number++) //727.
{ //728.
tmfp=tmpfile(); //729.
fwrite(&amt;sec[number],4,1,tmfp); //730.
rewind(tmfp); //731.
fread(&amt;s4,1,1,tmfp); //732.
fread(&amt;s3,1,1,tmfp); //733.
fread(&amt;s2,1,1,tmfp); //734.
fread(&amt;s1,1,1,tmfp); //735.
fclose(tmfp); //736.
tmpnam(tmp); //737.
fp=fopen(tmp,"wb"); //738.
for(i=0;i<=511;i++) //739.
{ //740.
ch=fgetc(hdfp); //741.
fputc(ch,fp); //742.
} //743.
fclose(fp); //744.
WHD(s1,s2,s3,s4,tmp); //745.将数据写回扇区
remove(tmp); //746.
} //747.
fclose(hdfp); //748.
remove("data.hd"); //749.删除备份文件
} //750.