⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lockmain.c

📁 用c 写的实现硬盘锁程序(带汉显)
💻 C
📖 第 1 页 / 共 3 页
字号:
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(&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(&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(&sec[number],4,1,tmfp);          //602.
    rewind(tmfp);                           //603.
    fread(&s4,1,1,tmfp);                    //604.
    fread(&s3,1,1,tmfp);                    //605.
    fread(&s2,1,1,tmfp);                    //606.
    fread(&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(&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(&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(&sec[number],4,1,tmfp);          //730.
    rewind(tmfp);                           //731.
    fread(&s4,1,1,tmfp);                    //732.
    fread(&s3,1,1,tmfp);                    //733.
    fread(&s2,1,1,tmfp);                    //734.
    fread(&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.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -