分享

Python生成黑客字典程序(一)

 梨惠子 2014-04-24

Python生成黑客字典,首先需要字符串来源

可以使用string包中的printable,具体作用如下:

string.printable为所有字符的集合,包含数字,大小写字母,符号包含空格制表符回车等;

使用string.printable[:-9]可获 得: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=& gt;?@[\]^_`{|}~这些符号,因为一般的字典中不会用到空格回车等这些特殊字符,因此只需要前面的字符即可。

要获得数字所组成的字符串集合,即为:string.printable[:10]

要获得字母所组成的字符串集合,即为:string.printable[10:62]

生成字符串通过迭代组合即可以得到所需的字典内容,然后存储下来就可以得到所谓的黑客字典。

迭代过程使用itertools,这部分内容,详情可以自行百度或者Google。

使用方法:python *.py 6 6 Six_nums_dict.txt

其中第一个参数为最短长度,第二个参数为最长长度,第三个参数为存储路径(存储文件)

这样就生成了单个字符长为6的字典,打开Six_nums_dict.txt,即可看到生成信息;

因为一般密码长度不会太长,所以没有必要生成太长的密码,


  1. #!/usr/bin/env python  
  2. #coding:utf-8  
  3. #By eathings  
  4.   
  5. import sys  
  6. import string  
  7. import itertools  
  8.   
  9. def get_strings():  
  10.     chars=string.printable[:10]  
  11.     strings=[]  
  12.     for i in xrange(min,max+1):  
  13.         strings.append((itertools.product(chars,repeat=i),))  
  14.     return itertools.chain(*strings)  
  15.   
  16. def make_dict():  
  17.     f = open(file,'a')  
  18.     for x in list_str:  
  19.         for y in x:  
  20.             f.write("".join(y))  
  21.             f.write('\n')  
  22.     f.close()  
  23.     print 'Done'  
  24.   
  25. while True:  
  26.     if len(sys.argv)==4:  
  27.         try:  
  28.             min = int(sys.argv[1])  
  29.             max = int(sys.argv[2])  
  30.         except:  
  31.             print "wrong"  
  32.             sys.exit(0)  
  33.         if min <= max:  
  34.             list_str= get_strings()  
  35.             file=sys.argv[3]  
  36.             make_dict()  
  37.             sys.exit(0)  

点击此处下载6位数字组成的字典。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多