也许标题不清楚,所以让我自己解释一下。
假设我有一个字符串:“ 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,所以也许有一种方法可以适应它?
[如果您能帮助我,谢谢,如果我不是很清楚,请毫不犹豫地要求澄清!