通过字母表逐渐增加字母

时间:2018-10-26 11:17:27

标签: python list

因此,我一直在尝试为php表单创建一个简单的蛮力脚本(当然是在我自己的本地网络服务器上),它实际上是通过for循环将数据从列表中输入到列表中而起作用的。这是问题所在;如果我的列表是:Java并且我的for循环看起来像这样:

list = ['a','b','c','d','e','f','g']

问题是,这仅适用于一个字母密码(因为它仅在列表中循环一次)。我的问题是;我将如何获取它,以便一旦在列表中循环一次,它将再次启动for循环,除了列表中的两个元素(即aa,ab,ac,ad,ae,ef等)

谢谢!

2 个答案:

答案 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))