/*
PWD.EXE Program for DOS/Win9x
*/
#include "stdio.h"
#include "conio.h"
#include "string.h"
char FILENAME[] = "PWD.DAT";
char XORCODE[] = "39745811";
int main(int argc,char *argv[])
{
FILE *fp;
int i=8;
int j=0;
char pass[8];
textcolor(LIGHTGREEN);
textbackground(BLUE);
if ((fp=fopen(FILENAME,"rb"))==NULL)
{
if ((fp=fopen(FILENAME,"wb"))==NULL)
{
printf("Cannot open PWD Data file, Exit!");
return 1;
}
do{
strcpy(pass,getpass("First run, please enter new password(need 8 bits letter):"));
}while (strlen(pass)!=8);
SetPassword(pass,fp);
fclose(fp);
return 0;
}
else
{
fgets(pass,9,fp);
for(;j<strlen(pass);j++)
pass[j]=pass[j]^XORCODE[j];
fclose(fp);
}
if (argc >= 1)
{
if ((strcmp(argv[1],"/s")==0) || (strcmp(argv[1],"/S")==0))
{
fp=fopen(FILENAME,"wb");
do{
strcpy(pass,getpass("Reset password(need 8 bits letter):"));
}while (strlen(pass)!=8);
SetPassword(pass,fp);
fclose(fp);
return 0;
}
}
do{
clrscr();
if (i<=0) return 1;
/*gotoxy(1,1);
printf("password is %s, residual %d",pass,i);*/
i--;
gotoxy(25,12);
}
while(strcmp(getpass("Enter Password:"),pass)!=0);
textcolor(WHITE);
textbackground(BLACK);
clrscr();
gotoxy(1,1);
return 0;
/*printf("Press any key to return....");
getch();*/
}
int SetPassword(char *str, FILE *fp)
{
int i;
char pass[8];
for(i=0;i<strlen(str);i++)
pass[i]=str[i]^XORCODE[i];
return fputs(pass,fp);
}
/* using for Batch file example:
pwd.exe
if errorlevel 1 if not errorlevel 2 goto PWD_Error
....
:PWD_Error
echo Password Error!
....
*/