2024-09-28 21:01:20 发布
网友
我需要找到一种使用python(aaaa,aaab,aaac…zzzz)从aaaa到zzzz进行暴力攻击的方法。 类似于0000到9999。 有没有一种“神奇”的方法可以使用循环和列表来实现这一点
这是一个非常“基本”的例子:
chars = 'abcdefghijklmnopqrstuvwxyz' my_list = [] for c1 in chars: for c2 in chars: for c3 in chars: for c4 in chars: my_list.append(c1+c2+c3+c4) print(my_list)
您可以使用^{}简洁地实现这一点:
import itertools import string for elem in itertools.product(string.ascii_lowercase, repeat=5): ...
以下是该方法产生的前30个值的示例:
>>> values = itertools.product(string.ascii_lowercase, repeat=5) >>> print(list(itertools.islice(values, 30))) [ ('a', 'a', 'a', 'a', 'a'), ('a', 'a', 'a', 'a', 'b'), ('a', 'a', 'a', 'a', 'c'), # Snip ('a', 'a', 'a', 'a', 'x'), ('a', 'a', 'a', 'a', 'y'), ('a', 'a', 'a', 'a', 'z'), ('a', 'a', 'a', 'b', 'a'), ('a', 'a', 'a', 'b', 'b'), ('a', 'a', 'a', 'b', 'c'), ('a', 'a', 'a', 'b', 'd') ]
请注意,此序列中有26**5 == 11881376个值,因此您可能不希望将它们全部存储在列表中。在我的系统中,这样的列表大约占用100个MiB
26**5 == 11881376
cs = 'abcdefghijklmnopqrstuvwxyz' list(map(''.join, [(a,b,c,d) for a in cs for b in cs for c in cs for d in cs]))
这是一个非常“基本”的例子:
您可以使用^{} 简洁地实现这一点:
以下是该方法产生的前30个值的示例:
请注意,此序列中有
26**5 == 11881376
个值,因此您可能不希望将它们全部存储在列表中。在我的系统中,这样的列表大约占用100个MiB相关问题 更多 >
编程相关推荐