Python 3.2中的暴力脚本

Yeg*_*ers 5 python passwords brute-force python-3.x

我是编写代码的初学者,我从Python开始,因为它似乎是最开始的最简单的(我目前有Python 3.2).现在我已经阅读了一些有关python编码的在线书籍,我已经制作了一些小程序,就是这样.

但后来我想创建一个可以强制随机密码的程序,如:

PassWord = random.randint(0,9999)
Run Code Online (Sandbox Code Playgroud)

我做了一些可以尝试随机密码的东西:

import random
PassWord = str(random.randint(0,9999))
Trial = ' '
while Trial != PassWord:
    Trial = str(random.randint(0,9999))
    print(Trial)
    if Trial == PassWord:
        print('The password is: '+PassWord)
        input()
Run Code Online (Sandbox Code Playgroud)

但这不是真正的蛮力攻击,它更多的是试图随机猜测密码.我认为暴力攻击首先尝试所有可能性的1位数,然后是2,3位,依此类推.但我不知道如何做到这一点.

我真的很感激,如果有人会说如何创建一个程序,首先用1位数检查所有可能性,如果可能的话,以正确的顺序(0,1,2,3等),然后2,3和4位数.

然后我可以解决它,并了解有关Python的更多信息.

Jon*_*nts 16

代码优先:

from itertools import product

chars = '0123456789' # chars to look for

for length in range(1, 3): # only do lengths of 1 + 2
    to_attempt = product(chars, repeat=length)
    for attempt in to_attempt:
        print(''.join(attempt))
Run Code Online (Sandbox Code Playgroud)

itertools.product产生其输入的笛卡尔连接 - 在这种情况下,它与自身"连接".所以在第一次迭代中,每个单个字符都被打印出来.然后在下一次迭代中,因为repeat=length(length现在是== 2),生成'00','01'等等...值得尝试并看到输出以更好地理解它.

这也意味着您可以抛出字母(大写/小写),并更改range函数中的上限.

它肯定不会打破代码破解的世界,但应该让您了解Python的灵活性和可用的工具.

我会让你检查密码匹配并打破循环.