我自己的蛮力

My Own Brute Force

所以我正在尝试创建我自己的暴力应用程序类型。 我知道已经有关于如何做到这一点的版本,但我需要有关我正在做的某种方式的帮助

我所做的是创建一个遍历值数组的循环

poss = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]

它给出了所有可能的字符(不包括特殊字符),我稍后添加它们。

我每次都设置一个默认密码只是为了测试目的,这将更改为我日后试图破解的格式。

psw = str(input("Password?"))

所以我所做的是做一个 for 循环,循环遍历 poss 中的所有值,如果它等于密码,它将中断并打印它是正确的

for i in poss:
    print(i)
    if i is psw:
        print("\"" +i+ "\"", "Is the correct password!")
        break

这里的代码没问题..如果密码是一个字符。

但是现在我面临着添加角色的问题。 例如,如果我循环到结束 poss 并且它仍然不匹配 psw 我如何让它添加小数位,例如一旦它尝试“0”我希望它重新启动但带有一个字符之前喜欢“aa”,然后是“ab”等等

更新:

我尝试添加更多列表:

possa = []
possb = []
possc = []
possd = []

等等

然后我继续将值循环到:

for i in poss:
    possa.append("a"+str(i))
    possb.append("b"+str(i))
    possc.append("c"+str(i))
    possd.append("d"+str(i))

等等

这是一种方法,但又很长,因为我必须对 poss 中的每个字符都执行此操作,然后再对三个字符(如“aaa”)执行此操作

from itertools import product
from string import ascii_lowercase, digits

possible_chars = ascii_lowercase + digits

for password_length in range(1, 9):  # up to 8 characters
    for chars in product(possible_chars, repeat=password_length):
        guess = "".join(chars)
        # test guess