例如对于hello和unix两个单词的单词文件,本程序可生成:
hello
Hello
HELLO
unix
Unix
UNIX
hellounix
helloUnix
helloUNIX
Hellounix
HelloUnix
HelloUNIX
HELLOunix
HELLOUnix
HELLOUNIX
UNIXHELLO
UNIXhello
UNIXHello
unixHELLO
unixhello
unixHello
UnixHELLO
Unixhello
UnixHello
由此可见,我这种简单的方法能生成的口令字典也是很大的。如果你的口令能在这种字典中找到,那么
被别人破解也是几秒钟的事情!
单词文件 PWDICT.PWS 举例如下:
root
2000
server
sco
unix
hello
运行程序命令是: PWDICT.EXE < PWDICT.PWS > PWDICT.DIC
本程序使用了递归和输入、输出重定向。
PWDICT.C 源程序如下:(单词文件最多支持300个单词,每个单词最长20个字符)
/* pwdict.c --- Generate passwd dict
M.L.Y 2001.2
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_STRING_LEN 20
#define MAX_PWS 300
char *upperstr(char *str)
{
int i, n;
n = strlen((char *)str);
for(i = 0; i < n; i++)
str[i] = toupper(str[i]);
return str;
}
char *lowerstr(char *str)
{
int i, n;
n = strlen((char *)str);
for(i = 0; i < n; i++)
str[i] = tolower(str[i]);
return str;
}
char *capstr(char *str)
{
str[0] = toupper(str[0]);
return str;
}
int disp_pd(char *s1, char *s2)
{
int n1, n2;
n1 = strlen(s1);
n2 = strlen(s2);
if(n1 == 0 && n2 == 0) return 0;
if(n1 == 0 || n2 == 0) return printf("%s%s\n", s1, s2);
printf("%s%s\n", s1, s2);
printf("%s%s\n", s2, s1);
return 1;
}
int gen_pd2s(char *s1, char *s2, int mode)
{
char ts1[MAX_STRING_LEN+1], ts2[MAX_STRING_LEN+1];
int k1 = 0, k2 = 0, n1, n2;
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 口令 自己 一个 生成 源码 if s1 s2 ts2 char ts1 str |
注册
个人空间
