Dr.com密码读取程序

//读取本地机器保存的密码
//时间2008年6月22日16:35:13
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>//windows.h是c的库函数,用于编写win窗口
#define BUFSIZE 0x60/*这是一个宏定义,表示凡是在程序中出现的BUFSIZE变量,都被赋于值0x60再纠正你一下,在宏定义中,一般用大写*/
 
const char* szFilename = "\\micsystem.bin";

char* decipher(char buf[], int len)
{
  double f1 = 9.9465868287297208320e-06,
         f2 = 96.00000, f; 
  char* szPlainText;
  int i, r;
  char c;

  szPlainText = (char *)malloc(len);

  for(i = 0; i < len; i++){   
    if (buf[i] < 0x20 || buf [i] > 0x7E) continue;
    else{

      c = buf[i] - 0x20;
      r = (0x75B9 * (i + 1)) % 0x188B9;      // 第一轮余数计算
      f = (double)r * f1 * f2;               // 浮点运算
      c = (c - (int)f) % 0x5F;               // 最后一轮余数运算,结果
     
      if(c <= 0) c += 0x7F;
      else c += 0x20;
     
      szPlainText[i] = c;   
    }
  }

  return szPlainText;
}

int main()
{
  char szFilePath[128];
  char buf[BUFSIZE] = {0};
  FILE* fp;

  GetSystemDirectory(szFilePath, MAX_PATH);
  strcat(szFilePath, szFilename);

  if((fp = fopen(szFilePath,"r")) != NULL)
  {
    fgets(buf, BUFSIZE, fp);
       
    printf("%s", decipher(buf, strlen(buf)));
    getch();

    fclose(fp);
  }
  else{
    printf("\ncannotopenfile:%s\n", szFilePath);
   
    return 1;
  }

  return 0;
}