花褪残红青杏小。燕子飞时,绿水人家绕。

再试RAR密码破解(CRC32)

菜鸟编程 十五楼的鸟儿 67897浏览 0评论

这篇文章只不过是之前 [教你绕过rar密码] 的高级应用,原理是一样的。

问题背景和之前也类似,就是稍微复杂一些。某bbs发布小型的彩票,论坛用户用自己的论坛货币购买压住,然后压中获奖。

总共五组号码,五组号码由数字1~12中产生,前四个号码不重复,第五个号码可以与前四个号码重复。

剩下的我想你如果看过之前的文章,我想你明白了,论坛发布彩票的管理员,将实现设置好的数字保存于txt文件中,加密压缩,等开奖的时候再公布密码。

因为涉及到一个还算有意思的排列组合,所以才写的这个,而这个实话说我自己没写出来,找人代劳了。

一段C代码,实现生成所有排列组合的文件,注意一定要生成到一个指定的文件夹,到桌面或者根目录,你电脑一定会卡死的。

#include <stdio.h>
#include <string.h>
#define N 200 //输出数 最大11880

int Check(int* numList)
{
 int i, j;
 
 for (i = 0; i < 4; i++)
  for (j = 0; j < 4; j++)
  {
   if (i == j)
    continue;
   if (numList[i] == numList[j])
    return 0;
  }
  return 1;
}

int main()
{
// FILE* fout;
 
 char* list[12] = {"01", "02", "03", "04",
  "05", "06", "07", "08",
  "09", "10", "11", "12"};
 char filePreName[100];
 char fileName[100];
 char filePreCon[200];
 char fileCon[200];
 int numList[5];
 int i, j, k;
 
 memset(numList, 0, sizeof(numList));
 
 for (i = 0; i < N; i++)
 {
  memset(filePreName, 0, sizeof(filePreName));
  memset(fileName, 0, sizeof(fileName));
  memset(filePreCon, 0, sizeof(filePreCon));
  memset(fileCon, 0, sizeof(fileCon));
  
  while (!Check(numList))
  {
   numList[0]++;
   for (j = 0; j < 4; j++)
   {
    if (numList[j] > 11)
    {
     numList[j] = 0;
     numList[j+1]++;
    }
   }
  }
  
  for (j = 3; j >= 0; j--)
  {
   strcat(filePreName, list[numList[j]]);
   strcat(filePreCon, list[numList[j]]);
   if (j)
    strcat(filePreCon, ",");
  }
  
  for (k = 0; k < 12; k++)
  {
   strcpy(fileName, filePreName);
   strcat(fileName, list[k]);
   strcat(fileName, ".txt");
   
   strcpy(fileCon, filePreCon);
   strcat(fileCon, "+");
   strcat(fileCon, list[k]);
   
   freopen(fileName, "w", stdout);
   printf("%s\n", fileCon);
  }
  
  numList[0]++;
  for (j = 0; j < 4; j++)
  {
   if (numList[j] > 11)
   {
    numList[j] = 0;
    numList[j+1]++;
   }
  }
 }
}

生成的文档内容为XX、XX、XX、XX+XX,然后文件名为XXXXXXXXXX.txt,也就是内容部分去掉标点和符号。

剩下的任务,当然少不了微软提供的CRC32利器: [微软CRC32命令行工具],具体用法就不说了 for命令用好,将结果输出到一个txt文件中,可能校核稍微时间长了点(前面那个写一万多个文件的速度也不快)。

再用校核得到的CRC32的值与winrar中显示的数值做对比就可以得到最终结果。


转载请注明:鸟儿博客 » 再试RAR密码破解(CRC32)

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址