本密码生成器根据地区号码段(7位),然后补全后面4位数字来生成所有组合手机号(11位),其中代码中的1.txt文件是地区号码段,2.txt文件是生成后的密码字典。(注:每个地区的运营商号码段需从网上收集)
#include
#include
#include
char s[11];
char ss[11];
char s1[11];
char s2[11];
char s3[11];
char s4[11];
int i=0;
int a,b,c,d;
int k=0;
int count=0;
char *num[]={"0","1","2","3","4","5","6","7","8","9"};
FILE *fp,*fb;
void check();
void creat();
int main()
{
check();
creat();
fclose(fp);
fclose(fb);
return 0;
}
void check()
{
fp=fopen("1.txt","r");
if((fopen("1.txt","r"))==NULL)
{
printf("读取文件打开文件失败\n");
}
else
{
printf("读取文件打开文件成功\n");
}
fb=fopen("2.txt","a");
if((fopen("2.txt","a"))==NULL)
{
printf("写入文件打开文件失败\n");
}
else
{
printf("写入文件打开文件成功\n");
}
}
void creat()
{
while(!feof(fp))
{
fscanf(fp,"%s\n",s);
for(a=0;a<10;a++)
{
strcpy(s1,s);
strcat(s,num[a]);
for(b=0;b<10;b++)
{
strcpy(s2,s);
strcat(s,num[b]);
for(c=0;c<10;c++)
{
strcpy(s3,s);
strcat(s,num[c]);
for(d=0;d<10;d++)
{
strcpy(s4,s);
strcat(s,num[d]);
if(a==0&&b==0&&c==0&&d==0&&i==0)
{
fprintf(fb,"%s",s);
i=1;
}
else
{
fprintf(fb,"\n%s",s);
}
printf("%s\n",s);
strcpy(s,s4);
}
strcpy(s,s3);
}
strcpy(s,s2);
}
strcpy(s,s1);
}
}
}
CC=gcc
main: *.o
$(CC) $^ -o $@
%.o: %.c
$(CC) -c $^
#伪代码
.PHONEY: clear
clear:
rm *.o main 2.txt
所需三个文件
输入make命令后生成可执行文件main(main.o为目标文件)
输入./main运行可执行文件,即可生成2.txt 。
2.txt(生成的密码字典)