我正在尝试创建一个将蛮力用于学术 python 项目的函数。可以限制密码我想传入密码,并且函数迭代一组字符(az,AZ,0-9)尝试组合,直到找到密码。我知道这将是低效的,所以为了测试让我们假设密码是 4 个字符长。任何有关开始编写此函数的帮助将不胜感激。
问问题
18792 次
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 = 2
then 循环将通过组合运行:('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 回答