首先声明:本教程只用于技术交流,请勿用于非法用途。请严格遵循相关法律法规。

晚上莫名想要折腾一下aircraft,虽然本学校用的网络是校园网,**了wifi也不能直接用,还得**别人的账号密码,但是这个就越界了,所以我们只是实验性质的做一下。但是突然想起来影响**成功率的最大因素就是字典的好坏,反正都是暴力**,如果没有一个趁手的字典,再怎么努力也没用。

一般来说获取字典的方式都是直接从网上下载,可是据我个人的经验来讲,网上下载的字典并没什么大用。一是那些字典多为英文单词,不符合中国国情,我猜大部分人用的密码都是与自己相关的,比如姓名,生日,女朋友生日,或者这几种的组合等等,这也就是为什么社会工程学也是黑客必备课程之一的原因。二是密码字典太小了,如果就几兆的字典,你想他能**出什么来?一共就没几条数据,能**的东西很有限。或者网上动辄几十G的字典,下载又耗费时间,又耗费流量。所以我打算自己生成一个能**大多数密码的字典。

正好看到极客君发布的一篇文章中(https://www.cnblogs.com/lifengfneg/p/5992649.html)有生成字典的相关原理,便想着自己动手操作一下。

首先用列表存储最常用密码组合,生日的年、月、日。

Python生成密码字典教程

然后再存储名字的姓,名的拼音,与生日的年月日和符号组合,可能是大部分人的密码组成方式。

Python生成密码字典教程

Python生成密码字典教程

Python生成密码字典教程

通过这些字符串的排列组合,是不是能够造出一个符合我们用的字典生成器呢

有的字典可能还不够,大家可以帮我再找找,不过应该可以**大部分人的密码了,不信可以找找自己用的密码,是不是在我生成的字典里呢?

接下来是把这些字符串拼接起来,我不是什么大神,只能用最笨的办法,循环遍历列表,然后把每个值追加写入到字典文件中。这种方法的复杂度真的很高,如果是6个字符串拼接,那么时间复杂度可以达到O(n6),希望有大神可以给指导完善一下啦。

Python生成密码字典教程

名字相同也可以,这样自己写的时候更好区分一点,下面的gen4,5,6都和上面相同,只是多加了几重循环。

函数定义好了,就差往里传参数了,下面就是组合环节。其实还可以有很多组合方法,只不过组合的方法越多,你的字典就越大,可以根据实际需要组合。用我的方法组合出来的字典有10多个G,应该能应付大部分情况了,如果不能,那就接着生成更全的字典,或者将漏掉的组合方式生成到别的字典文件中,利用多个字典进行**。

Python生成密码字典教程

Python生成密码字典教程

Python生成密码字典教程

看看我的组合里面有没有你的密码呢?有的话考虑一下换个密码吧~~

Python生成密码字典教程

最后就是生成的密码字典了,每次打印的好处是你不用怀疑自己的程序没干活,实时观测进度嘛~~~最后生成的字典文件如下,一共13.1G,要是把所有人拼音输进去可能更容易就**了啊,就是字典太大了。

Python生成密码字典教程

不过也不用担心,毕竟生成又不像下载一样费流量,而且时间还慢。只需要下载一个字典生成代码,简简单单生成密码文件~~

Python生成密码字典教程

最后欢迎大家光临我的博客

陈京九的博客

相关文章: