仅使用给定大小的组合进行暴力破解

问题描述 投票:0回答:1

也许标题不清楚,所以让我自己解释一下。

假设我有一个字符串:“ 1234567890”

而且我想特殊地进行暴力破解:每个组合都必须是6个字符长,不能少于,也不能超过。我已经有一个完整的蛮力(带有字母,数字和符号)的itertools示例,它为我提供了长度从1到6的所有值,但是我不希望这样...这里是顺便说一句:

from itertools import chain, product
def bruteforce(charset, maxlength):
    file = open("test.txt", "w")
    return (''.join(candidate)
        for candidate in chain.from_iterable(product(charset, repeat=i)
        for i in range(1, maxlength + 1)))
var = str((list(bruteforce("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ²&é(-è_çà)=^$*ù,;:!<1234567890°+¨£µ%?./§>~{[|`\^@]}¤€ .", 6))))
file.write(var)
file.close()
print("Done")

所以您知道一种方法,也许用numpy吗?我已经考虑过要进行“经典的”暴力破解,然后使用for循环,删除len(element)<6的每个元素,但是这花费了很多时间,而且实际上还没有进行优化。

我也看到了:How to get all possible shuffle combinations using numpy但这似乎只需要2个数字(0或1),而不是我想要的10个数字。我不太了解numpy,所以也许有一种方法可以适应它?

[如果您能帮助我,谢谢,如果我不是很清楚,请毫不犹豫地要求澄清!

python python-3.x itertools brute-force
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.