如何利用Python自动生成复杂的数据字典并用于暴力破解?

Python是一款非常强大的语言。用于测试时它非常有效,因此Python越来越受到欢迎。

因此,在此次教程中我将聊一聊如何在Python中生成字典,并将它用于任何你想要的用途。

那么我们开始吧。

前提要求

1,Python 2.7(对于Python 3.x的版本基本相同,你只需要做一些微小调整)

2,Peace of mine(作者开的一个玩笑,这是一首歌名)

如果你用virtualenv搭建Python开发环境,请确保已经安装了itertools。因为我们将会用到itertools生成字典。我们将一步一步地演示整个过程,所以请跟着本文学习,不要仅仅是复制粘贴所有代码。

生成字典

新建一个名为”dicgen.py”的文件,并用你最顺手的文本编辑器打开它。

首先我们要调用itertools。

如何利用Python自动生成复杂的数据字典用于暴力破解等

如何利用Python自动生成复杂的数据字典用于暴力破解等

我使用了itertools as itr,可以少打一些字。在调用了itertools之后,我们进入下一步。

我们需要选择一些关键词形成一些组合来生成所需的字典。把这些关键词交给itertools提供的方法来生成字典。

寻找合适的关键词需要一些小窍门。举个例子,我忘记了一个用来管理服务器的文件密码(.php)。我需要输入用户名和密码来打开这个文件,才可以对我的服务器进行修改。我也忘记了cpanel的登录信息。因此我决定暴力破解密码。我记得用户名,但是密码记得不是很清楚,而且手动尝试了所有组合但都不正确。因此我在Python里写了一个脚本去生成密码并登录。我手头上有一些密码的线索,比如它是长度为六位,仅是字母组合,不包含数字或特殊符号。

让我们回到教程中来。假设要生成一个六位长度,并且仅含有字母的密码(大小写混合)。

如何利用Python自动生成复杂的数据字典用于暴力破解等

如何利用Python自动生成复杂的数据字典用于暴力破解等

我们一点一点地来讲解这段代码。

words变量是我们希望在密码中尝试的字符。在本例中,这些字符就是字母表中的大写和小写字母。所以我们在这里添加了所有的大写、小写字母。

itr.product(words, repeat=6)是这段代码最主要的部分,从给定的字母表中返回选择的列表。由于本例中密码长度为六位,所以此处设定了重复6次(repeat=6)。

我们把这个过程循环6次,确保每个字母列表都被加入到主列表中。

我们再把所有生成的密码都放到一个列表里,看看能有多少种组合。但现在还别运行它,否则你的电脑可能会死机。

如何利用Python自动生成复杂的数据字典用于暴力破解等

如何利用Python自动生成复杂的数据字典用于暴力破解等

我们建议你在密码生成后立即使用它,或者将它储存在一个文档里。这只是一个基本。在下一个教程里我们会更多地了解如何根据我们的需求更高效地生成密码。

下面是完整代码。

如何利用Python自动生成复杂的数据字典用于暴力破解等

如何利用Python自动生成复杂的数据字典用于暴力破解等