|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『楼 主』:
[已结]怎样用批处理生成一个纯字母的密码字典
我想用批处理来生成一个纯字母(可以只考虑小写字母)的密码字典,用户输入密码长度,自动生成字典文件dictionary.txt
如果输入3,则dictionary.txt的内容如下:
Quote: | aaa
aab
aac
...
zzx
zzy
zzz |
|
如果输入4,则dictionary.txt的内容如下:
Quote: | aaaa
aaab
aaac
....
zzzx
zzzy
zzzz |
|
望高人指点。
[ Last edited by HAT on 2008-11-12 at 21:42 ]
|
|
2007-9-16 13:25 |
|
|
scriptor
银牌会员
积分 1187
发帖 555
注册 2006-12-21
状态 离线
|
『第
2 楼』:
如果楼主要求不高的话
看看这个
你可以改一下
这个并没有做到把26个字母做全排列!
@echo off
setlocal enabledelayedexpansion
set tb=abcdefghijklmnopqrstuvwxyz
set/p in=" 输入密码位数N: "
for /l %%i in (1,1,!in!) do (
for /l %%a in (0,1,25) do (
set /a n+=1
set /a m=%%a-!random:~0,1!
if !m! lss 0 set /a m=-m
if !n! leq !in! (call :out !n! !m!) else (set/a n=0&echo.>>dic.txt)
)
)
echo.
start dic.txt
endlocal
pause&exit/b
:out
>>dic.txt set/p out=!tb:~%2,1!<nul
[ Last edited by scriptor on 2007-9-16 at 04:48 PM ]
|
|
2007-9-16 16:41 |
|
|
scriptor
银牌会员
积分 1187
发帖 555
注册 2006-12-21
状态 离线
|
『第
3 楼』:
如果向得到更多的话
可以改一改:
for /l %%i in (1,1,!in!) do
为
for /l %%i in (1,1,!n!!in!) do
不过要小心,!n!!n!太多了,运行会耗时间的
|
|
2007-9-16 16:45 |
|
|
scriptor
银牌会员
积分 1187
发帖 555
注册 2006-12-21
状态 离线
|
『第
4 楼』:
将代码稍改一下tb
tb=abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
可以有大小写和数字
不过这个程序写的不好啊!
|
|
2007-9-16 17:04 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
5 楼』:
输入1的时候,结果不对:
b
b
c
e
g
h
i
n
o
p
r
v
x
|
|
2007-9-17 00:06 |
|
|
scriptor
银牌会员
积分 1187
发帖 555
注册 2006-12-21
状态 离线
|
『第
6 楼』:
Quote: | Originally posted by HAT at 2007-9-17 00:06:
输入1的时候,结果不对:
b
b
c
e
g
h
i
n
o
p
r
v
x |
|
嗯,是的
我这个只是随机输出
我说过了
它并没有解决26个字母的全排列问题
你可以尝试着解决一下
思路有很多
不一定我的就是好的e
|
|
2007-9-17 01:51 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
7 楼』:
试了下面这段4位的,在我机子(3G CPU)上从aaaa到zzzz得花一分钟左右(不显示echo部分),所以想用批处理的出这样的字典还是算了吧
@echo off
set "str=a b c d e f g h i j k l m n o p q r s t u v w x y z"
for %%a in (%str%) do (
for %%c in (%str%) do (
for %%e in (%str%) do (
for %%g in (%str%) do (
echo %%a%%c%%e%%g
)
)
)
)
pause
exit 给段10位以内的:
@echo off
set "str=a b c d e f g h i j k l m n o p q r s t u v w x y z"
for /l %%n in (1,1,10) do (
set for%%n=rem
set display%%n=
)
set num=
set /p num= 输入密码位数N (1≥N≥10):
for /l %%n in (1,1,%num%) do set for%%n=
echo.
set time_=%time%
for %%a in (%str%) do (set display1=%%a
%for2% for %%c in (%str%) do (set display2=%%c
%for3% for %%e in (%str%) do (set display3=%%e
%for4% for %%g in (%str%) do (set display4=%%g
%for5% for %%i in (%str%) do (set display5=%%i
%for6% for %%k in (%str%) do (set display6=%%k
%for7% for %%m in (%str%) do (set display7=%%m
%for8% for %%o in (%str%) do (set display8=%%o
%for9% for %%q in (%str%) do (set display9=%%q
%for10% for %%s in (%str%) do (set display10=%%s
call echo.%%display1%%%%display2%%%%display3%%%%display4%%%%display5%%%%display6%%%%display7%%%%display8%%%%display9%%%%display10%%
%for2% )
%for3% )
%for4% )
%for5% )
%for6% )
%for7% )
%for8% )
%for9% )
%for10% )
)
echo.
echo %time_%
echo %time%
echo.
pause
exit [ Last edited by zh159 on 2007-9-17 at 03:31 AM ]
|
|
|
2007-9-17 03:29 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
8 楼』:
没有比一层一层写for循环更高效的算法吗?
|
|
2007-9-17 06:30 |
|