因此,我一直在尝试为php表单创建一个简单的蛮力脚本(当然是在我自己的本地网络服务器上),它实际上是通过for循环将数据从列表中输入到列表中而起作用的。这是问题所在;如果我的列表是:Java
并且我的for循环看起来像这样:
list = ['a','b','c','d','e','f','g']
问题是,这仅适用于一个字母密码(因为它仅在列表中循环一次)。我的问题是;我将如何获取它,以便一旦在列表中循环一次,它将再次启动for循环,除了列表中的两个元素(即aa,ab,ac,ad,ae,ef等)
谢谢!
答案 0 :(得分:2)
您可以通过增加数字并将其转换为以7为基数(列表的长度)来将其视为基本转换问题:
def convert(n, lst):
s = ''
while True:
s = lst[n % len(lst)] + s
if n < len(lst):
break
n = n // len(lst) - 1
return s
这样:
lst = ['a','b','c','d','e','f','g']
print(convert(0, lst))
print(convert(6, lst))
print(convert(7, lst))
print(convert(8, lst))
print(convert(55, lst))
print(convert(56, lst))
print(convert(57, lst))
输出:
a
g
aa
ab
gg
aaa
aab
答案 1 :(得分:1)
如果我理解正确,可以使用itertools
。
import itertools
lst = ['a','b','c','d']
for x in range(1, len(lst)):
passwords = list(itertools.product(lst, repeat=x))
for password in passwords:
print(''.join(password))