下面两个是我自己写的字典生成器,代码比较简单,大牛勿笑。
第一个是指定字典的最长和最短,然后盲目生成字典的生成器,包括数字,大小写字母,特殊符号等。
代码如下:
#!/usr/bin/env python # -*- coding:utf-8 -*- #********************************************************* #* 暴力字典生成器 * #* 支持自定位数生成,包括大小写字母、特殊符号和数字 * #* BY:netcat 2012-02-10 * #* http://www.netcat.tk * #********************************************************* import sys,string,itertools def help(): print '[usage]: python mydic.py -h or --help to get help\n' print '[usage]: python mydic.py mim max outfile\n' print ' mim: mim dic length,must be a number\n' print ' max: max dic length,must be a number\n' print 'outfile: output filename' def dic(): chars=string.printable[:-5] p=[] for i in xrange(min,max+1): p.append((itertools.product(chars,repeat=i),)) return itertools.chain(*p) def write(): f=open(file,'a') for x in d: for y in x: f.write("".join(y)) f.write('\n') f.close() print 'Done' while True: if len(sys.argv)==4: try: min=int(sys.argv[1]);max=int(sys.argv[2]) except: help() sys.exit(1) if min <= max: d=dic() file=sys.argv[3] write() sys.exit(0) else: print 'error:'+sys.argv[2]+'<'+sys.argv[1] sys.exit(1) elif len(sys.argv)==2: if sys.argv[1].lower() == "-h" or sys.argv[1].lower() == "--help": help() sys.exit(0) else: help() sys.exit(1)第二个字典也叫社会工程学字典,是根据name,age,birthday,mail等生成字典的生成器。 代码如下:
#!/usr/bin/env python # -*- coding:utf-8 -*- #********************************************************* #* 社会工程学字典生成器 * #* 根据name,age,birthday,mail,qq等生成密码 * #* BY:netcat 2012-02-10 * #* http://www.netcat.tk * #********************************************************* import itertools def input(): l=[] name=raw_input('enter name>') l.append(name) net_name=raw_input('enter netname>') try: age=str(int(raw_input('enter age>'))) except: print 'age must be a number.eg:44' return input() else: l.append(age) try: birthday=str(int(raw_input('enter birthday>'))) except: print 'birthday must be a number.eg:19900304' return input() else: l.append(birthday) mail=raw_input('enter mail>') l.append(mail) try: qq=str(int(raw_input('enter qq>'))) except: print 'qq must be number.eg:123321' return input() else: l.append(qq) other1=raw_input('enter other1>') l.append(other1) other2=raw_input('enter other2>') l.append(other2) return l def dic(): p=[] for x in xrange(8): p.append((itertools.product([i for i in ans],repeat=x),)) return itertools.chain(*p) def write(): file=raw_input('enter dic name>') if file == '': file='a1.txt' print 'create dic file a1.txt' f=open(file,'a') for x in d: for y in x: f.write("".join(y)) f.write('\n') f.close() print 'Done' ans=input() d=dic() write()