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

📄 lock.c

📁 硬盘锁和解锁代码。
💻 C
📖 第 1 页 / 共 3 页
字号:
{                                           //229.
  FILE *tmfp,*hdfp,*fp;                     //230.
  char h[512];                              //231.
  char tmp[13];                             //232.
  int i,j;                                  //233.
  int fat;                                  //234.
  unsigned long sec[120];                   //235.
  unsigned number=0;                        //236.
  unsigned long k=0,m;                      //237.设定扇区号从0开始
  unsigned long data1,data2;                //238.
  unsigned char s1,s2,s3,s4;                //239.
  char ch;                                  //240.
                                            //241.
  hdfp=fopen("data.hd","ab+");              //242.以添加方式打开文件
  tmfp=tmpfile();                           //243.
  fwrite(&k,4,1,tmfp);                      //244.
  rewind(tmfp);                             //245.
  fread(&s4,1,1,tmfp);                      //246.
  fread(&s3,1,1,tmfp);                      //247.
  fread(&s2,1,1,tmfp);                      //248.
  fread(&s1,1,1,tmfp);                      //249.
  fclose(tmfp);                             //250.
  tmpnam(tmp);                              //251.
  RHD(s1,s2,s3,s4,tmp);                     //252.
  sec[number]=k;                            //253.将扇区号存入数组
  number++;                                 //254.下标加1
  fp=fopen(tmp,"rb");                       //255.
  for(i=0;i<=511;i++)                       //256.
  {                                         //257.
    ch=fgetc(fp);                           //258.读字符
    fputc(ch,hdfp);                         //259.写字符
  }                                         //260.
  fseek(fp,470,0);                          //261.移动文件指针
  fread(&data1,4,1,fp);                     //262.读一个双字
  fseek(fp,450,0);                          //263.称动文件指针
  fat=fgetc(fp);                            //264.读一个字符
  fclose(fp);                               //265.
  remove(tmp);                              //266.删除临时文件
                                            //267.
  m=k=k+63;                                 //268.
  for(j=1;j<=5;j++)                         //269.连续读5个扇区
  {                                         //270.
    tmfp=tmpfile();                         //271.
    fwrite(&k,4,1,tmfp);                    //272.
    rewind(tmfp);                           //273.
    fread(&s4,1,1,tmfp);                    //274.
    fread(&s3,1,1,tmfp);                    //275.
    fread(&s2,1,1,tmfp);                    //276.
    fread(&s1,1,1,tmfp);                    //277.
    fclose(tmfp);                           //278.
    tmpnam(tmp);                            //279.
    RHD(s1,s2,s3,s4,tmp);                   //280.
    sec[number]=k;                          //281.
    number++;                               //282.
    fp=fopen(tmp,"rb");                     //283.
    for(i=0;i<=511;i++)                     //284.
    {                                       //285.
      ch=fgetc(fp);                         //286.
      fputc(ch,hdfp);                       //287.
    }                                       //288.
    fclose(fp);                             //289.
    remove(tmp);                            //290.
    k++;                                    //291.
  }                                         //292.
  if(fat==0x0b)                             //293.若为FAT32分区
  {                                         //294.
    k=m+32;                                 //295.
    for(j=1;j<=6;j++)                       //296.连续读6个扇区
    {                                       //297.
      tmfp=tmpfile();                       //298.
      fwrite(&k,4,1,tmfp);                  //299.
      rewind(tmfp);                         //300.
      fread(&s4,1,1,tmfp);                  //301.
      fread(&s3,1,1,tmfp);                  //302.
      fread(&s2,1,1,tmfp);                  //303.
      fread(&s1,1,1,tmfp);                  //304.
      fclose(tmfp);                         //305.
      tmpnam(tmp);                          //306.
      RHD(s1,s2,s3,s4,tmp);                 //307.
      sec[number]=k;                        //308.
      number++;                             //309.
      fp=fopen(tmp,"rb");                   //310.
      for(i=0;i<=511;i++)                   //311.
      {                                     //312.
        ch=fgetc(fp);                       //313.
        fputc(ch,hdfp);                     //314.
      }                                     //315.
      fclose(fp);                           //316.
      remove(tmp);                          //317.
      k++;                                  //318.
    }                                       //319.
  }                                         //320.
  if(data1==0)                              //321.若记录扇区数的字段值为0
  ;                                         //322.空操作
  else                                      //323.否则
  {                                         //324.开始读扩展分区数据
    k=data1;                                //325.
    while(1)                                //326.
    {                                       //327.
      tmfp=tmpfile();                       //328.
      fwrite(&k,4,1,tmfp);                  //329.
      rewind(tmfp);                         //330.
      fread(&s4,1,1,tmfp);                  //331.
      fread(&s3,1,1,tmfp);                  //332.
      fread(&s2,1,1,tmfp);                  //333.
      fread(&s1,1,1,tmfp);                  //334.
      fclose(tmfp);                         //335.
      tmpnam(tmp);                          //336.
      RHD(s1,s2,s3,s4,tmp);                 //337.
      sec[number]=k;                        //338.
      number++;                             //339.
      fp=fopen(tmp,"rb");                   //340.
      for(i=0;i<=511;i++)                   //341.
      {                                     //342.
        ch=fgetc(fp);                       //343.
        fputc(ch,hdfp);                     //344.
      }                                     //345.
      fseek(fp,470,0);                      //346.
      fread(&data2,4,1,fp);                 //347.
      fseek(fp,450,0);                      //348.
      fat=fgetc(fp);                        //349.
      fclose(fp);                           //350.
      remove(tmp);                          //351.
                                            //352.
      m=k=k+63;                             //353.
      for(j=1;j<=5;j++)                     //354.
      {                                     //355.
        tmfp=tmpfile();                     //356.
        fwrite(&k,4,1,tmfp);                //357.
        rewind(tmfp);                       //358.
        fread(&s4,1,1,tmfp);                //359.
        fread(&s3,1,1,tmfp);                //360.
        fread(&s2,1,1,tmfp);                //361.
        fread(&s1,1,1,tmfp);                //362.
        fclose(tmfp);                       //363.
        tmpnam(tmp);                        //364.
        RHD(s1,s2,s3,s4,tmp);               //365.
        sec[number]=k;                      //366.
        number++;                           //367.
        fp=fopen(tmp,"rb");                 //368.
        for(i=0;i<=511;i++)                 //369.
        {                                   //370.
          ch=fgetc(fp);                     //371.
          fputc(ch,hdfp);                   //372.
        }                                   //373.
        fclose(fp);                         //374.
        remove(tmp);                        //375.
        k++;                                //376.
      }                                     //377.
      if(fat==0x0b)                         //378.
      {                                     //379.
        k=m+32;                             //380.
        for(j=1;j<=6;j++)                   //381.
        {                                   //382.
          tmfp=tmpfile();                   //383.
          fwrite(&k,4,1,tmfp);              //384.
          rewind(tmfp);                     //385.
          fread(&s4,1,1,tmfp);              //386.
          fread(&s3,1,1,tmfp);              //387.
          fread(&s2,1,1,tmfp);              //388.
          fread(&s1,1,1,tmfp);              //389.
          fclose(tmfp);                     //390.
          tmpnam(tmp);                      //391.
          RHD(s1,s2,s3,s4,tmp);             //392.
          sec[number]=k;                    //393.
          number++;                         //394.
          fp=fopen(tmp,"rb");               //395.
          for(i=0;i<=511;i++)               //396.
          {                                 //397.
            ch=fgetc(fp);                   //398.
            fputc(ch,hdfp);                 //399.
          }                                 //400.
          fclose(fp);                       //401.
          remove(tmp);                      //402.
          k++;                              //403.
        }                                   //404.
      }                                     //405.
      if(data2==0)                          //406.
        break;                              //407.
      k=data1+data2;                        //408.
    }                                       //409.
  }                                         //410.
  fclose(hdfp);                             //411.关闭备份文件
}                                           //412.
                                            //413.
void copyf()                                //414.拷贝文件函数
{                                           //415.
  FILE *fp;                                 //416.
  int i;                                    //417.
  char ch;                                  //418.
  unsigned l,u;                             //419.
  char datahd[30720];                       //420.定义存储文件内容的数组
                                            //421.
  i=open("data.hd",O_CREAT);                //422.
  l=filelength(i);                          //423.
  close(i);                                 //424.
  fp=fopen("data.hd","rb");                 //425.
  for(u=0;u<l;u++)                          //426.
    datahd[u]=fgetc(fp);                    //427.将字符读入数组
  fclose(fp);                               //428.
  while(1)                                  //429.
  {                                         //430.
    printf("Copy file [data.hd] "           //431.
    "to A:\\ (Y/N)?: ");                    //432.
    ch=toupper(getche());                   //433.
    printf("\n");                           //434.
    if(ch==89)                              //435.
    {                                       //436.
      fp=fopen("a:\\data.hd","wb");         //437.以写方式打开A盘文件
      for(u=0;u<l;u++)                      //438.
      fputc(datahd[u],fp);                  //439.将字符输出到文件
      fclose(fp);                           //440.
      printf("Ok!\n");                      //441.
    }                                       //442.
    if(ch==78)                              //443.
    {                                       //444.
      break;                                //445.跳出循环
    }                                       //446.
  }                                         //447.
}                                           //448.
                                            //449.
void cle()                                  //450.扇区清零函数
{                                           //451.
  FILE *tmfp,*hdfp,*fp;                     //452.
  char h[512];                              //453.
  char tmp[13];                             //454.
  int i,c;                                  //455.
  int fat;                                  //456.
  unsigned byte,number=0;                   //457.
  unsigned long sec[120];                   //458.
  unsigned long k=0,m;                      //459.
  unsigned long data1,data2;                //460.
  unsigned char s1,s2,s3,s4;                //461.
                                            //462.
  hdfp=fopen("data.hd","rb");               //463.
  tmpnam(tmp);                              //464.

⌨️ 快捷键说明

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