DOS 下的简单登陆程序

/*
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!
   ....

*/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值