我怎样才能创建一个简单的python强力函数?

时间:2012-11-19 18:29:06

标签: python-3.x

我正在尝试创建一个将对学术python项目使用蛮力的函数。密码可以限制我要传递密码,函数迭代一组字符(a-z,A-Z,0-9)尝试组合,直到找到密码。我知道这样效率很低所以对于测试我们假设密码长度为4个字符。任何开始写这个功能的帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

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行:做你需要做的事

例如,如果characters = '01234567890'password_length = 2,那么循环将贯穿组合:('0','0'), ('0','1'), ('0','2')...('0','9'),('1','0'),('1','1')...('9','9')

答案 1 :(得分: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)