2

我正在尝试创建一个将蛮力用于学术 python 项目的函数。可以限制密码我想传入密码,并且函数迭代一组字符(az,AZ,0-9)尝试组合,直到找到密码。我知道这将是低效的,所以为了测试让我们假设密码是 4 个字符长。任何有关开始编写此函数的帮助将不胜感激。

4

2 回答 2

6
gen = itertools.combinations_with_replacement(characters,password_length) #1
for password in gen:                                                      #2 
    check_password(password)                                              #3

这是它的工作原理:

  • 第 1 行:这将创建一个生成器。它就像一个函数,可以记住它停止的位置。查看更多信息: http: //getpython3.com/diveintopython3/generators.html。这个特定的生成器会遍历给定长度的给定字符的所有可能组合。
  • 第 2 行:对于 for 循环的每次迭代,调用 next(gen)。这产生下一个值
  • 第 3 行:做你需要做的事

例如 ifcharacters = '01234567890'password_length = 2then 循环将通过组合运行:('0','0'), ('0','1'), ('0','2')...('0','9'),('1','0'),('1','1')...('9','9').

于 2012-11-19T20:47:15.780 回答
0

对于预先知道的长度:

import random
a_z = "abcdefghijklmnopqrstuvwxyz_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
while password != curtry:
    currenttry = random.choice(a_z)+random.choice(a_z)+random.choice(a_z)+random.choice(a_z)

对于随机长度:

import random
a_z = "abcdefghijklmnopqrstuvwxyz_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
while password != curtry:
    leng = random.randint(4,12) #random int between 4 and 12
    i = 0
    curtry = "lol"
    for i<leng:
         curtry += random.choice(a_z)
于 2013-06-19T12:10:28.710 回答