Board logo

标题: [已结]怎样生成一个纯数字的密码字典 [打印本页]

作者: HAT     时间: 2007-8-29 14:10    标题: [已结]怎样生成一个纯数字的密码字典

我想用批处理来生成密码字典,用户输入密码长度,自动生成字典文件dictionary.txt
如果输入3,则dictionary.txt的内容如下:

  Quote:
000
001
002
...
998
999

如果输入4,则dictionary.txt的内容如下:

  Quote:
0000
0001
0002
....
9998
9999

望高人指点。

[ Last edited by HAT on 2008-11-12 at 21:39 ]
作者: wudixin96     时间: 2007-8-29 16:42

@echo off
set /p num=input a number:
for /l %%i in (1,1,%num%) do call set max=%%max%%9
call set max=%%max:~0,%num%%%
for /l %%i in (0,1,%max%) do set out=000000000000000000000000%%i&&call echo %%out:~-%num%%%>>dictionary.txt

pause

作者: HAT     时间: 2007-8-29 22:18
多谢 wudixin96 兄
我会在此基础上思考一下纯字母密码以及字母数字混合密码
如果有问题的话再来请教
作者: HAT     时间: 2007-8-29 22:18
差点忘了加分
罪过罪过
补上啦
作者: rockdong     时间: 2007-8-30 17:01
學習一下.
作者: 523066680     时间: 2008-12-19 10:32
也做了一个,只支持9位以下,重在参与嘛
@echo off &setlocal enabledelayedexpansion
title code by hi.baidu.com/523066680
set /p "n=输入位数,最大为9: "

for /l %%x in (1,1,%n%) do (
  set fo="for %%%%x in (0 1 2 3 4 5 6 7 8 9) do (!fo!"
  set end="!end!)"
  set echo=!echo! %%%%x
)

%fo:"=%
          echo %echo%
%end:"=%
pause

作者: netbenton     时间: 2009-1-4 02:47
(六)楼的速度好快,看不懂
我用笨办法练习一下:
@echo off
cd.>dictionary.txt
set /p in=key a number:
set b=%in%
:ex1
if %b% gtr 0 set /a b-=1&set max=9%max%&goto :ex1
set ba=%max:9=0%
:ex2
if %b% leq %max% set ok=%ba%%b%&call echo %%ok:~-%in%%%>>dictionary.txt&set /a b+=1&goto ex2
type dictionary.txt&pause&goto :eof
作者: linee     时间: 2009-1-4 16:11
从效率上看应该是6楼的单纯n个循环最快了,7楼这个如果每个数都要去if一下,效率可想而知。
受7楼补0的启发,我也来练习一下,效率应该跟6楼很接近。
@echo off
setlocal enabledelayedexpansion
set /p n=key a number:
for /l %%i in (%n%,-1,1) do (
    set z=&set min=&set max=
    for /l %%j in (2,1,%%i) do set z=0!z!
    for /l %%j in (%n%,-1,%%i) do (set/a min=max+1&set max=9!max!)
    if !max! equ 9 set/a min=0
    for /l %%j in (!min!,1,!max!) do echo !z!%%j
)
[ Last edited by linee on 2009-1-4 at 18:59 ]
作者: 523066680     时间: 2009-8-4 08:48
哈  6楼的就是 分别用两个变量 记录了 for的层数 和 结尾的括号数

%var%表达后 所代表的字符就被当成命令执行了。

我将其视为批处理的一优点,

1。 在未知句子镶嵌数量的情况下,可以利用字符串处理进行临时镶嵌。
2。 省了很多字符,就像上面的,多层For句子都放变量里面了

参考一篇发过的文章
http://www.cn-dos.net/forum/viewthread.php?tid=45240

[ Last edited by 523066680 on 2009-8-4 at 08:52 ]
作者: ficn     时间: 2009-8-4 23:25
@echo off&setlocal enabledelayedexpansion&set y=9999999999
set/p n=input a number:
for /l %%i in (1,1,!y:~-%n%!) do (set qq=0000000000%%i
echo !qq:~-%n%!)
pause