[ 永远的unix c源码生成一个自己的口令字典 ].htm
来自「C源码生成一个自己的口令字典」· HTM 代码 · 共 204 行
HTM
204 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0060)http://fanqiang.chinaunix.net/a4/b9/20010820/1000011152.html -->
<HTML><HEAD><TITLE>[ 永远的UNIX > C源码:生成一个自己的口令字典 ]</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>BODY {
FONT: 12pt 宋体
}
TH {
FONT: 12pt 宋体
}
INPUT {
FONT: 12pt 宋体
}
SELECT {
FONT: 12pt 宋体
}
TEXTAREA {
FONT: 12pt 宋体
}
SELECT {
FONT: 12pt 宋体
}
checkbox {
FONT: 12pt 宋体
}
A:link {
COLOR: #e6a306; TEXT-DECORATION: underline
}
A:visited {
COLOR: #e6a306; TEXT-DECORATION: underline
}
A:hover {
COLOR: #ffff00; TEXT-DECORATION: underline
}
BODY {
FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
TD {
FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
P {
FONT-SIZE: 9pt; LINE-HEIGHT: 150%
}
</STYLE>
<META content="MSHTML 6.00.2900.2523" name=GENERATOR></HEAD>
<BODY text=#ffffff bgColor=#000000
background="[ 永远的UNIX C源码生成一个自己的口令字典 ].files/bline.gif">
<DIV align=center>
<CENTER>
<TABLE height=400 cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD height=45>
<P align=center><IMG alt="[ 永远的UNIX::UNIX技术资料的宝库 ]"
src="[ 永远的UNIX C源码生成一个自己的口令字典 ].files/title.gif"></P></TD></TR>
<TR>
<TR>
<TD vAlign=bottom align=left height=40><SMALL><A
href="http://fanqiang.chinaunix.net/">首页</A> > 编程技术 > 源码天堂 >
正文</SMALL></TD></TR>
<TR>
<TD width="100%" bgColor=#d09f0d colSpan=5 height=2><IMG height=1
src="[ 永远的UNIX C源码生成一个自己的口令字典 ].files/c.gif" width=1></TD></TR>
<TR>
<TD vAlign=center align=middle height=40><FONT
size=5><B>C源码:生成一个自己的口令字典</B></FONT></TD></TR>
<TR>
<TD align=middle height=20><FONT
color=#999999><SMALL>本文出自:http://mly363.363.net 作者: (2001-08-22
16:36:31)</SMALL></FONT></TD></TR>
<TR>
<TD align=middle>
<TABLE cellSpacing=0 cellPadding=0 width=700 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top><FONT
color=#cccccc> 使用一个单词文件,本程序只考虑单个单词的大小写变形和两个变形单词的组合,由此生成一个字典,
<BR> 例如对于hello和unix两个单词的单词文件,本程序可生成:
<BR>hello <BR>Hello <BR>HELLO <BR>unix <BR>Unix <BR>UNIX
<BR>hellounix <BR>helloUnix <BR>helloUNIX <BR>Hellounix
<BR>HelloUnix <BR>HelloUNIX <BR>HELLOunix <BR>HELLOUnix
<BR>HELLOUNIX <BR>UNIXHELLO <BR>UNIXhello <BR>UNIXHello
<BR>unixHELLO <BR>unixhello <BR>unixHello <BR>UnixHELLO
<BR>Unixhello <BR>UnixHello
<BR> 由此可见,我这种简单的方法能生成的口令字典也是很大的。如果你的口令能在这种字典中找到,那么
<BR> 被别人破解也是几秒钟的事情!
<BR> 单词文件 PWDICT.PWS 举例如下: <BR>root
<BR>2000 <BR>server <BR>sco <BR>unix <BR>hello
<BR> 运行程序命令是: PWDICT.EXE < PWDICT.PWS > PWDICT.DIC
<BR> 本程序使用了递归和输入、输出重定向。
<BR> PWDICT.C 源程序如下:(单词文件最多支持300个单词,每个单词最长20个字符)
<BR><BR>/* pwdict.c --- Generate passwd dict
<BR> M.L.Y 2001.2 <BR>*/
<BR><BR>#include <stdio.h>
<BR>#include <string.h> <BR>#include <ctype.h>
<BR><BR>#define MAX_STRING_LEN 20
<BR>#define MAX_PWS 300
<BR><BR>char *upperstr(char *str) <BR>{
<BR> int i, n;
<BR><BR> n = strlen((char *)str);
<BR> for(i = 0; i < n; i++)
<BR> str[i] = toupper(str[i]);
<BR> return str; <BR>}
<BR><BR>char *lowerstr(char *str) <BR>{
<BR> int i, n;
<BR><BR> n = strlen((char *)str);
<BR> for(i = 0; i < n; i++)
<BR> str[i] = tolower(str[i]);
<BR> return str; <BR>}
<BR><BR>char *capstr(char *str) <BR>{
<BR> str[0] = toupper(str[0]);
<BR> return str; <BR>}
<BR><BR>int disp_pd(char *s1, char *s2)
<BR>{ <BR> int n1, n2;
<BR><BR> n1 = strlen(s1);
<BR> n2 = strlen(s2);
<BR> if(n1 == 0 && n2 == 0) return 0;
<BR> if(n1 == 0 || n2 == 0) return printf("%s%s\n", s1, s2);
<BR> printf("%s%s\n", s1, s2);
<BR> printf("%s%s\n", s2, s1);
<BR> return 1; <BR>}
<BR><BR>int gen_pd2s(char *s1, char *s2, int mode)
<BR>{
<BR> char ts1[MAX_STRING_LEN+1], ts2[MAX_STRING_LEN+1];
<BR> int k1 = 0, k2 = 0, n1, n2;
<BR><BR> n1 = strlen(s1);
<BR> n2 = strlen(s2);
<BR> if(n1 == 0 || n2 == 0) return 0;
<BR> if(n1 > MAX_STRING_LEN || n2 > MAX_STRING_LEN) return 0;
<BR> strcpy(ts1, s1);
<BR> if(strcmp(s1, capstr(strcpy(ts1, s1))) == 0) k1 = 3;
<BR> else if(strcmp(s1, upperstr(ts1)) == 0) k1 = 2;
<BR> else if(strcmp(s1, lowerstr(ts1)) == 0) k1 = 1;
<BR> strcpy(ts2, s2);
<BR> if(strcmp(s2, capstr(strcpy(ts2, s2))) == 0) k2 = 3;
<BR> else if(strcmp(s2, upperstr(ts2)) == 0) k2 = 2;
<BR> else if(strcmp(s2, lowerstr(ts2)) == 0) k2 = 1;
<BR> if(mode == 1) <BR> {
<BR> printf("%s\n", s1);
<BR> if(isalpha(ts1[0]))
<BR> {
<BR> if(k1 != 3) printf("%s\n", capstr(strcpy(ts1,s1)));
<BR> if(k1 != 2) printf("%s\n", upperstr(ts1));
<BR> if(k1 != 1) printf("%s\n", lowerstr(ts1));
<BR> }
<BR> printf("%s\n", s2);
<BR> if(isalpha(ts2[0]))
<BR> {
<BR> if(k2 != 3) printf("%s\n", capstr(strcpy(ts2,s2)));
<BR> if(k2 != 2) printf("%s\n", upperstr(ts2));
<BR> if(k2 != 1) printf("%s\n", lowerstr(ts2));
<BR> }
<BR> if(!isalpha(ts1[0])) return gen_pd2s(s1, s2, 2);
<BR> gen_pd2s(upperstr(ts1), s2, 2);
<BR> gen_pd2s(lowerstr(ts1), s2, 2);
<BR> if(k1 == 0 || k1 == 3) gen_pd2s(s1, s2, 2);
<BR> if(k1 != 3) gen_pd2s(capstr(strcpy(ts1,s1)), s2, 2);
<BR> } <BR> if(mode == 2)
<BR> {
<BR> if(!isalpha(ts2[0])) return disp_pd(s1, s2);
<BR> disp_pd(s1, upperstr(ts2));
<BR> disp_pd(s1, lowerstr(ts2));
<BR> if(k2 == 0 || k2 == 3) disp_pd(s1, s2);
<BR> if(k2 != 3) disp_pd(s1, capstr(strcpy(ts2, s2)));
<BR> } <BR> return 0; <BR>}
<BR><BR>int main() <BR>{
<BR> char ps[MAX_PWS][MAX_STRING_LEN+1];
<BR> int i, j, n;
<BR><BR> for(n = 0; n < MAX_PWS; n++)
<BR> {
<BR> ps[n][0] = '\0';
<BR> gets(ps[n]);
<BR> if(strlen(ps[n]) == 0) break;
<BR> }
<BR> for(i = 0; i < n-1; i++)
<BR> for(j = i+1; j < n; j++)
<BR> gen_pd2s(ps[i], ps[j], 1);
<BR> return 0; <BR>}
<BR><BR>/* End of file. */ <BR><BR>(<A
href="http://www.fanqiang.com/">http://www.fanqiang.com/</A>)
</FONT> 进入【<A
href="http://www.chinaunix.net/">UNIX论坛</A>】 </TD></TR>
<TR>
<TD>
<HR>
</TD></TR>
<TR>
<TD><B>相关文章</B> </TD></TR>
<TR>
<TD></TD></TR>
<TR>
<TR>
<TD></TD></TR>
<TR>
<TD> </TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" bgColor=#d09f0d colSpan=5 height=2><IMG height=1
src="[ 永远的UNIX C源码生成一个自己的口令字典 ].files/c.gif" width=1></TD></TR>
<TR>
<TD vAlign=top width="100%" colSpan=5 height=40>
<P align=center><FONT color=#ffffff>★ 樊强制作 欢迎分享 ★
</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?