0

我正在尝试用 Python 编写一个简单的暴力破解程序,主要是为了测试我的 Python 知识。我有列表中的项目数,但我想让“brutedata”具有相同数量的项目。这是我的代码片段:

while count < contentscount - 1:
    count = count + 1
    brutedata = { postdata[0] : "admin", postdata[1] : contents[count] }
    brute = requests.post(target, data=brutedata)
    bruteresponse = brute.text

例如,如果指定了 3 个 POST 参数,则 brutedata 将是:

brutedata = { postdata[0] : "value", postdata[1] : "value", postdata[2] : "value" }
4

1 回答 1

1

您可以生成带有字典理解的字典:

brutedata = {'postdata[{}]'.format(i): v for i, v in enumerate(itemlist)}

这将生成一个包含 N 个键的字典,这些键名为postdata[0], postdata[1], ...,postdata[N]其值的顺序与输入itemlist元素的顺序相同。

此语法需要 Python 2.7 或更高版本;对于旧版本,您可以将dict()构造函数与生成 (key, value) 对的生成器表达式一起使用:

brutedata = dict(('postdata[{0}]'.format(i), v) for i, v in enumerate(itemlist))

演示:

>>> itemlist = ['foo', 'bar', 'baz']
>>> {'postdata[{}]'.format(i): v for i, v in enumerate(itemlist)}
{'postdata[1]': 'bar', 'postdata[2]': 'baz', 'postdata[0]': 'foo'}
>>> dict(('postdata[{0}]'.format(i), v) for i, v in enumerate(itemlist))
{'postdata[1]': 'bar', 'postdata[2]': 'baz', 'postdata[0]': 'foo'}

考虑到字典没有固定的顺序;在示例输出中的其他两个键之后列出的事实postdata[0]仅仅是由于用于 的底层哈希表的实现细节dict

于 2013-10-14T15:30:00.167 回答