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

📄 lock.c

📁 硬盘锁和解锁代码。
💻 C
📖 第 1 页 / 共 3 页
字号:
  fp=fopen(tmp,"wb+");                      //465.
  for(i=0;i<=511;i++)                       //466.
  {                                         //467.
    c=fgetc(hdfp);                          //468.
    fputc(c,fp);                            //469.
  }                                         //470.
  fseek(fp,470,0);                          //471.
  fread(&data1,4,1,fp);                     //472.
  fseek(fp,450,0);                          //473.
  fat=fgetc(fp);                            //474.
  fclose(fp);                               //475.
  remove(tmp);                              //476.
  sec[number]=k;                            //477.
  number++;                                 //478.
  m=k=k+63;                                 //479.
  for(i=1;i<=5;i++)                         //480.
  {                                         //481.
    sec[number]=k;                          //482.
    number++;                               //483.
    k++;                                    //484.
  }                                         //485.
  if(fat==0x0b)                             //486.
  {                                         //487.
    k=m+32;                                 //488.
    for(i=1;i<=6;i++)                       //489.
    {                                       //490.
      sec[number]=k;                        //491.
      number++;                             //492.
      k++;                                  //493.
    }                                       //494.
  }                                         //495.
  if(data1==0)                              //496.
  ;                                         //497.
  else                                      //498.
  {                                         //499.
    k=data1;                                //500.
    while(1)                                //501.
    {                                       //502.
      fseek(hdfp,512*(number),0);           //503.
      tmpnam(tmp);                          //504.
      fp=fopen(tmp,"wb+");                  //505.
      for(i=0;i<=511;i++)                   //506.
      {                                     //507.
        c=fgetc(hdfp);                      //508.
        fputc(c,fp);                        //509.
      }                                     //510.
      fseek(fp,470,0);                      //511.
      fread(&data2,4,1,fp);                 //512.
      fseek(fp,450,0);                      //513.
      fat=fgetc(fp);                        //514.
      fclose(fp);                           //515.
      remove(tmp);                          //516.
      sec[number]=k;                        //517.
      number++;                             //518.
      m=k=k+63;                             //519.
      for(i=1;i<=5;i++)                     //520.
      {                                     //521.
        sec[number]=k;                      //522.
        number++;                           //523.
        k++;                                //524.
      }                                     //525.
      if(fat==0x0b)                         //526.
      {                                     //527.
        k=m+32;                             //528.
        for(i=1;i<=6;i++)                   //529.
        {                                   //530.
          sec[number]=k;                    //531.
          number++;                         //532.
          k++;                              //533.
        }                                   //534.
      }                                     //535.
      if(data2==0)                          //536.
        break;                              //537.
      k=data1+data2;                        //538.
    }                                       //539.
  }                                         //540.
  fclose(hdfp);                             //541.
                                            //542.
  i=open("data.hd",O_CREAT);                //543.打开备份的数据文件
  byte=filelength(i);                       //544.测试文件长
  close(i);                                 //545.
  remove("data.hd");                        //546.删除数据文件
  byte=byte/512;                            //547.计算扇区数
  for(i=0;i<=511;i++)                       //548.
  {  h[i]=0;  }                             //549.将数组元素全部赋0值
  for(number=0;number<byte;number++)        //550.
  {                                         //551.
    tmfp=tmpfile();                         //552.
    fwrite(&sec[number],4,1,tmfp);          //553.
    rewind(tmfp);                           //554.
    fread(&s4,1,1,tmfp);                    //555.
    fread(&s3,1,1,tmfp);                    //556.
    fread(&s2,1,1,tmfp);                    //557.
    fread(&s1,1,1,tmfp);                    //558.
    fclose(tmfp);                           //559.
    tmpnam(tmp);                            //560.
    fp=fopen(tmp,"wb");                     //561.
    for(i=0;i<=511;i++)                     //562.
    {  fputc(h[i],fp);  }                   //563.
    fclose(fp);                             //564.
    WHD(s1,s2,s3,s4,tmp);                   //565.调用写扇区汇编子程序
    remove(tmp);                            //566.
  }                                         //567.
  textcolor(143);                           //568.
  cprintf("Ok!");                           //569.
  textcolor(7);                             //570.
  cprintf("\n");                            //571.
}                                           //572.
                                            //573.
void jie()                                  //574.解锁函数
{                                           //575.
  FILE *tmfp,*hdfp,*fp;                     //576.
  char ch;                                  //577.
  char tmp[13];                             //578.
  int i,c;                                  //579.
  int fat;                                  //580.
  unsigned byte,number=0;                   //581.
  unsigned long sec[120];                   //582.
  unsigned long k=0,m;                      //583.
  unsigned long data1,data2;                //584.
  unsigned char s1,s2,s3,s4;                //585.
                                            //586.
  hdfp=fopen("data.hd","rb");               //587.
  tmpnam(tmp);                              //588.
  fp=fopen(tmp,"wb+");                      //589.
  for(i=0;i<=511;i++)                       //590.
  {                                         //591.
    c=fgetc(hdfp);                          //592.
    fputc(c,fp);                            //593.
  }                                         //594.
  fseek(fp,470,0);                          //595.
  fread(&data1,4,1,fp);                     //596.
  fseek(fp,450,0);                          //597.
  fat=fgetc(fp);                            //598.
  fclose(fp);                               //599.
  remove(tmp);                              //600.
  sec[number]=k;                            //601.
  number++;                                 //602.
  m=k=k+63;                                 //603.
  for(i=1;i<=5;i++)                         //604.
  {                                         //605.
    sec[number]=k;                          //606.
    number++;                               //607.
    k++;                                    //608.
  }                                         //609.
  if(fat==0x0b)                             //610.
  {                                         //611.
    k=m+32;                                 //612.
    for(i=1;i<=6;i++)                       //613.
    {                                       //614.
      sec[number]=k;                        //615.
      number++;                             //616.
      k++;                                  //617.
    }                                       //618.
  }                                         //619.
  if(data1==0)                              //620.
  ;                                         //621.
  else                                      //622.
  {                                         //623.
    k=data1;                                //624.
    while(1)                                //625.
    {                                       //626.
      fseek(hdfp,512*(number),0);           //627.
      tmpnam(tmp);                          //628.
      fp=fopen(tmp,"wb+");                  //629.
      for(i=0;i<=511;i++)                   //630.
      {                                     //631.
        c=fgetc(hdfp);                      //632.
        fputc(c,fp);                        //633.
      }                                     //634.
      fseek(fp,470,0);                      //635.
      fread(&data2,4,1,fp);                 //636.
      fseek(fp,450,0);                      //637.
      fat=fgetc(fp);                        //638.
      fclose(fp);                           //639.
      remove(tmp);                          //640.
      sec[number]=k;                        //641.
      number++;                             //642.
      m=k=k+63;                             //643.
      for(i=1;i<=5;i++)                     //644.
      {                                     //645.
        sec[number]=k;                      //646.
        number++;                           //647.
        k++;                                //648.
      }                                     //649.
      if(fat==0x0b)                         //650.
      {                                     //651.
        k=m+32;                             //652.
        for(i=1;i<=6;i++)                   //653.
        {                                   //654.
          sec[number]=k;                    //655.
          number++;                         //656.
          k++;                              //657.
        }                                   //658.
      }                                     //659.
      if(data2==0)                          //660.
        break;                              //661.
      k=data1+data2;                        //662.
    }                                       //663.
  }                                         //664.
  fclose(hdfp);                             //665.
                                            //666.
  i=open("data.hd",O_CREAT);                //667.
  byte=filelength(i);                       //668.测试文件长
  close(i);                                 //669.
  byte=byte/512;                            //670.计算扇区数
  hdfp=fopen("data.hd","rb");               //671.打开备份文件
  for(number=0;number<byte;number++)        //672.
  {                                         //673.
    tmfp=tmpfile();                         //674.
    fwrite(&sec[number],4,1,tmfp);          //675.
    rewind(tmfp);                           //676.
    fread(&s4,1,1,tmfp);                    //677.
    fread(&s3,1,1,tmfp);                    //678.
    fread(&s2,1,1,tmfp);                    //679.
    fread(&s1,1,1,tmfp);                    //680.
    fclose(tmfp);                           //681.
    tmpnam(tmp);                            //682.
    fp=fopen(tmp,"wb");                     //683.
    for(i=0;i<=511;i++)                     //684.读一个扇区数据
    {                                       //685.
      ch=fgetc(hdfp);                       //686.
      fputc(ch,fp);                         //687.
    }                                       //688.
    fclose(fp);                             //689.
    WHD(s1,s2,s3,s4,tmp);                   //690.将数据写入扇区
    remove(tmp);                            //691.
  }                                         //692.
  fclose(hdfp);                             //693.
  remove("data.hd");                        //694.删除备份文件
  textcolor(143);                           //695.
  cprintf("Ok!");                           //696.
  textcolor(7);                             //697.
  cprintf("\n");                            //698.
}                                           //699.

⌨️ 快捷键说明

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