字典处理小脚本
前言:
很多人平时会收集很多字典,但是当字典的量太多的时候会不知道用哪个字典,所以就想着弄个简单的脚本,用来对收集到的字典进行去重和提取出现频率较高的内容。
1 # -*- coding:utf-8 -*- 2 3 import os 4 from collections import Counter 5 import sys 6 7 #Version:1.0 8 #by:reboot 9 10 #获取目标文件夹的路径 11 filedir = os.path.abspath('.') # 获取当前目录 12 filenames = os.listdir(filedir) 13 fname = open(filedir + '\\' + 'all_in_one.txt',"wb") 14 15 def MergeTxt(): #合并所有txt文件 16 pyname = sys.argv[0].split("/")[-1] 17 filenames.remove(pyname) #提前将脚本文件的名字从列表中移除,省去后面的比较过程。 18 #############合并文件 19 for filename in filenames: 20 file = open(filedir+'\\{0}'.format(filename), "rb") # 打开列表中的文件,读取文件内容 21 fname.write(file.read()) # 写入新建的文件中 22 file.close() # 关闭列表文件 23 fname.close() 24 25 26 def top_dict(all_in_one,all_in_one_length): #提取TOP字典 # 参数1:未去重的所有内容组成的列表 2:列表长度 27 top = input("请输入要生成排行前几的字典:\n") 28 if top.isdigit() and int(top) <= all_in_one_length: # 判断top是否是纯数字 29 counts = Counter(all_in_one) 30 data = counts.most_common(int(top)) 31 32 result = open(filedir + '\\' + 'Top' + top +'字典.txt',"wb") 33 for i in data: 34 result.write(list(i)[0]) 35 result.close() 36 37 38 def data_deduplication(): #合并的基础上对数据进行去重 39 file_deduplication = open(filedir + '\\' + 'all_in_one_deduplication.txt', "wb") 40 fname_set = open(filedir + '\\' + 'all_in_one.txt',"rb").readlines() 41 set_out = list(set(fname_set)) #文本内容每一行组成的无重复列表 42 set_out_length = len(set_out) 43 for i in set_out: 44 file_deduplication.write(i) 45 file_deduplication.close() 46 print("已完成对字典的去重操作。\n") 47 48 #进行排序,提取前几的字典 49 fname_set_length = len(list(fname_set)) 50 top_dict(fname_set,fname_set_length) 51 52 53 if __name__ == '__main__': 54 MergeTxt() 55 print('已完成字典合并,文件名:all_in_one.txt\n') 56 data_deduplication() #进行去重 57 input('按回车退出...')
脚本比较简单,支持用户名、密码、用户名&密码、WEB目录形式的字典。
各位也可以自行按需求进行添加功能,例如我本来有想过维护一份大字典然后转换成MD5字典的形式就可以本地维护一份彩虹表了,以前搞过一份大概270W条,后来也不知丢哪去了。。。
如果需要打包好的exe版本,可以后台回复“字典整理”进行获取。
------------------------------------------------------------------------------
欢迎分享转发。
(信安随笔)
免责声明:本文中提到的漏洞利用Poc和脚本仅供研究学习使用,请遵守《网络安全法》等相关法律法规。