|

楼主 |
发表于 2003-10-11 01:29:17
|
显示全部楼层
- #include <stdio.h>
- #define _XOPEN_SOURCE
- #include <unistd.h>
- #include <string.h>
- main(int argc,char **argv)
- {
- if(argc!=3)
- err_quit("Usage:command passwdfile cryptedpasswd");
- char passwd[13];
- char key[9];
- int passwdfd;
- FILE *passwdfp;
- if((passwdfp=fopen(argv[1],"r"))==NULL)
- err_quit("Open password file err");
- // if((passwdfd=open(argv[1],O_RDONLY))==-1)
- // err_quit("Password file open err");
- while(fgets(key,sizeof(key),passwdfp))
- {
- key[strlen(key)]='\0';
- // printf("%s\n",key);
- getpasswd(key,argv[2]);
- }
- }
- //##################################################
- int err_quit(char *message)
- {
- printf("%s\n",message);
- exit(-1);
- }
- int getpasswd(char *key,char *crypted)
- {
- int i='a',j='a';
- char s[2];
- int flag=1,iflag=0;
- char slat[2];
- while(flag){
- s[0]=i;
- s[1]=j;
- slat[0]=s[0];
- slat[1]=s[1]; char *ps;
- ps=(char *)crypt(key,slat);
- //printf("%c\t%c\n",slat[0],slat[1]);
- if(strcmp(ps,crypted)==0)
- {
- printf("Password=\t%s\n",key);
- flag=0;
- }
- if(j=='z')
- j='A';
- else if(j=='Z')
- j='.';
- else if(j=='.')
- j='/';
- else if(j=='/')
- {
- if(i=='/')
- flag=0;
- i++;
- j='a';
- iflag=1;
- }
- else
- j++;
- if(iflag==1&&i=='z'+1)
- i='A';
- else if(iflag==1&&i=='Z'+1)
- i='.';
- else if(iflag==1&&i=='.'+1)
- i='/';
- }
- i='a',j='a';
- }
复制代码 |
|