[ 永远的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> &gt; 编程技术 &gt; 源码天堂 &gt; 
      正文</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>&nbsp;&nbsp;&nbsp;&nbsp;使用一个单词文件,本程序只考虑单个单词的大小写变形和两个变形单词的组合,由此生成一个字典, 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;例如对于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>&nbsp;&nbsp;&nbsp;&nbsp;由此可见,我这种简单的方法能生成的口令字典也是很大的。如果你的口令能在这种字典中找到,那么 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;被别人破解也是几秒钟的事情! 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;单词文件&nbsp;PWDICT.PWS&nbsp;举例如下: <BR>root 
            <BR>2000 <BR>server <BR>sco <BR>unix <BR>hello 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;运行程序命令是:&nbsp;PWDICT.EXE&nbsp;&lt;&nbsp;PWDICT.PWS&nbsp;&gt;&nbsp;PWDICT.DIC 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;本程序使用了递归和输入、输出重定向。 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;PWDICT.C&nbsp;源程序如下:(单词文件最多支持300个单词,每个单词最长20个字符) 
            <BR><BR>/*&nbsp;pwdict.c&nbsp;---&nbsp;Generate&nbsp;passwd&nbsp;dict 
            <BR>&nbsp;&nbsp;&nbsp;M.L.Y&nbsp;2001.2 <BR>*/ 
            <BR><BR>#include&nbsp;&lt;stdio.h&gt; 
            <BR>#include&nbsp;&lt;string.h&gt; <BR>#include&nbsp;&lt;ctype.h&gt; 
            <BR><BR>#define&nbsp;MAX_STRING_LEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20 
            <BR>#define&nbsp;MAX_PWS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;300 
            <BR><BR>char&nbsp;*upperstr(char&nbsp;*str) <BR>{ 
            <BR>&nbsp;&nbsp;int&nbsp;&nbsp;i,&nbsp;n; 
            <BR><BR>&nbsp;&nbsp;n&nbsp;=&nbsp;strlen((char&nbsp;*)str); 
            <BR>&nbsp;&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;n;&nbsp;i++) 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;str[i]&nbsp;=&nbsp;toupper(str[i]); 
            <BR>&nbsp;&nbsp;return&nbsp;str; <BR>} 
            <BR><BR>char&nbsp;*lowerstr(char&nbsp;*str) <BR>{ 
            <BR>&nbsp;&nbsp;int&nbsp;&nbsp;i,&nbsp;n; 
            <BR><BR>&nbsp;&nbsp;n&nbsp;=&nbsp;strlen((char&nbsp;*)str); 
            <BR>&nbsp;&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;n;&nbsp;i++) 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;str[i]&nbsp;=&nbsp;tolower(str[i]); 
            <BR>&nbsp;&nbsp;return&nbsp;str; <BR>} 
            <BR><BR>char&nbsp;*capstr(char&nbsp;*str) <BR>{ 
            <BR>&nbsp;&nbsp;str[0]&nbsp;=&nbsp;toupper(str[0]); 
            <BR>&nbsp;&nbsp;return&nbsp;str; <BR>} 
            <BR><BR>int&nbsp;&nbsp;disp_pd(char&nbsp;*s1,&nbsp;char&nbsp;*s2) 
            <BR>{ <BR>&nbsp;&nbsp;int&nbsp;n1,&nbsp;n2; 
            <BR><BR>&nbsp;&nbsp;n1&nbsp;=&nbsp;strlen(s1); 
            <BR>&nbsp;&nbsp;n2&nbsp;=&nbsp;strlen(s2); 
            <BR>&nbsp;&nbsp;if(n1&nbsp;==&nbsp;0&nbsp;&amp;&amp;&nbsp;n2&nbsp;==&nbsp;0)&nbsp;return&nbsp;0; 
            <BR>&nbsp;&nbsp;if(n1&nbsp;==&nbsp;0&nbsp;||&nbsp;n2&nbsp;==&nbsp;0)&nbsp;return&nbsp;printf("%s%s\n",&nbsp;s1,&nbsp;s2); 
            <BR>&nbsp;&nbsp;printf("%s%s\n",&nbsp;s1,&nbsp;s2); 
            <BR>&nbsp;&nbsp;printf("%s%s\n",&nbsp;s2,&nbsp;s1); 
            <BR>&nbsp;&nbsp;return&nbsp;1; <BR>} 
            <BR><BR>int&nbsp;&nbsp;gen_pd2s(char&nbsp;*s1,&nbsp;char&nbsp;*s2,&nbsp;int&nbsp;mode) 
            <BR>{ 
            <BR>&nbsp;&nbsp;char&nbsp;ts1[MAX_STRING_LEN+1],&nbsp;ts2[MAX_STRING_LEN+1]; 
            <BR>&nbsp;&nbsp;int&nbsp;&nbsp;k1&nbsp;=&nbsp;0,&nbsp;k2&nbsp;=&nbsp;0,&nbsp;n1,&nbsp;n2; 
            <BR><BR>&nbsp;&nbsp;n1&nbsp;=&nbsp;strlen(s1); 
            <BR>&nbsp;&nbsp;n2&nbsp;=&nbsp;strlen(s2); 
            <BR>&nbsp;&nbsp;if(n1&nbsp;==&nbsp;0&nbsp;||&nbsp;n2&nbsp;==&nbsp;0)&nbsp;return&nbsp;0; 
            <BR>&nbsp;&nbsp;if(n1&nbsp;&gt;&nbsp;MAX_STRING_LEN&nbsp;||&nbsp;n2&nbsp;&gt;&nbsp;MAX_STRING_LEN)&nbsp;return&nbsp;0; 
            <BR>&nbsp;&nbsp;strcpy(ts1,&nbsp;s1); 
            <BR>&nbsp;&nbsp;if(strcmp(s1,&nbsp;capstr(strcpy(ts1,&nbsp;s1)))&nbsp;==&nbsp;0)&nbsp;k1&nbsp;=&nbsp;3; 
            <BR>&nbsp;&nbsp;else&nbsp;if(strcmp(s1,&nbsp;upperstr(ts1))&nbsp;==&nbsp;0)&nbsp;k1&nbsp;=&nbsp;2; 
            <BR>&nbsp;&nbsp;else&nbsp;if(strcmp(s1,&nbsp;lowerstr(ts1))&nbsp;==&nbsp;0)&nbsp;k1&nbsp;=&nbsp;1; 
            <BR>&nbsp;&nbsp;strcpy(ts2,&nbsp;s2); 
            <BR>&nbsp;&nbsp;if(strcmp(s2,&nbsp;capstr(strcpy(ts2,&nbsp;s2)))&nbsp;==&nbsp;0)&nbsp;k2&nbsp;=&nbsp;3; 
            <BR>&nbsp;&nbsp;else&nbsp;if(strcmp(s2,&nbsp;upperstr(ts2))&nbsp;==&nbsp;0)&nbsp;k2&nbsp;=&nbsp;2; 
            <BR>&nbsp;&nbsp;else&nbsp;if(strcmp(s2,&nbsp;lowerstr(ts2))&nbsp;==&nbsp;0)&nbsp;k2&nbsp;=&nbsp;1; 
            <BR>&nbsp;&nbsp;if(mode&nbsp;==&nbsp;1) <BR>&nbsp;&nbsp;{ 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("%s\n",&nbsp;s1); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(isalpha(ts1[0])) 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(k1&nbsp;!=&nbsp;3)&nbsp;printf("%s\n",&nbsp;capstr(strcpy(ts1,s1))); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(k1&nbsp;!=&nbsp;2)&nbsp;printf("%s\n",&nbsp;upperstr(ts1)); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(k1&nbsp;!=&nbsp;1)&nbsp;printf("%s\n",&nbsp;lowerstr(ts1)); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;} 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("%s\n",&nbsp;s2); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(isalpha(ts2[0])) 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(k2&nbsp;!=&nbsp;3)&nbsp;printf("%s\n",&nbsp;capstr(strcpy(ts2,s2))); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(k2&nbsp;!=&nbsp;2)&nbsp;printf("%s\n",&nbsp;upperstr(ts2)); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(k2&nbsp;!=&nbsp;1)&nbsp;printf("%s\n",&nbsp;lowerstr(ts2)); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;} 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!isalpha(ts1[0]))&nbsp;return&nbsp;gen_pd2s(s1,&nbsp;s2,&nbsp;2); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;gen_pd2s(upperstr(ts1),&nbsp;s2,&nbsp;2); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;gen_pd2s(lowerstr(ts1),&nbsp;s2,&nbsp;2); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(k1&nbsp;==&nbsp;0&nbsp;||&nbsp;k1&nbsp;==&nbsp;3)&nbsp;gen_pd2s(s1,&nbsp;s2,&nbsp;2); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(k1&nbsp;!=&nbsp;3)&nbsp;gen_pd2s(capstr(strcpy(ts1,s1)),&nbsp;s2,&nbsp;2); 
            <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;if(mode&nbsp;==&nbsp;2) 
            <BR>&nbsp;&nbsp;{ 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!isalpha(ts2[0]))&nbsp;return&nbsp;disp_pd(s1,&nbsp;s2); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;disp_pd(s1,&nbsp;upperstr(ts2)); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;disp_pd(s1,&nbsp;lowerstr(ts2)); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(k2&nbsp;==&nbsp;0&nbsp;||&nbsp;k2&nbsp;==&nbsp;3)&nbsp;disp_pd(s1,&nbsp;s2); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(k2&nbsp;!=&nbsp;3)&nbsp;disp_pd(s1,&nbsp;capstr(strcpy(ts2,&nbsp;s2))); 
            <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;return&nbsp;0; <BR>} 
            <BR><BR>int&nbsp;&nbsp;main() <BR>{ 
            <BR>&nbsp;&nbsp;char&nbsp;ps[MAX_PWS][MAX_STRING_LEN+1]; 
            <BR>&nbsp;&nbsp;int&nbsp;&nbsp;i,&nbsp;j,&nbsp;n; 
            <BR><BR>&nbsp;&nbsp;for(n&nbsp;=&nbsp;0;&nbsp;n&nbsp;&lt;&nbsp;MAX_PWS;&nbsp;n++) 
            <BR>&nbsp;&nbsp;{ 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;ps[n][0]&nbsp;=&nbsp;'\0'; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;gets(ps[n]); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(strlen(ps[n])&nbsp;==&nbsp;0)&nbsp;break; 
            <BR>&nbsp;&nbsp;} 
            <BR>&nbsp;&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;n-1;&nbsp;i++) 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;for(j&nbsp;=&nbsp;i+1;&nbsp;j&nbsp;&lt;&nbsp;n;&nbsp;j++) 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gen_pd2s(ps[i],&nbsp;ps[j],&nbsp;1); 
            <BR>&nbsp;&nbsp;return&nbsp;0; <BR>} 
            <BR><BR>/*&nbsp;End&nbsp;of&nbsp;file.&nbsp;*/ <BR><BR>(<A 
            href="http://www.fanqiang.com/">http://www.fanqiang.com/</A>) 
            </FONT>&nbsp;&nbsp;&nbsp;&nbsp;进入【<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>&nbsp;</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>★&nbsp;&nbsp;樊强制作 欢迎分享&nbsp;&nbsp;★ 
      </FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?