Python编写合并字典并实现敏感目录的小脚本


Posted in Python onFebruary 26, 2019

0x00 起因

接触网安快一年了,爱收集一些字典啊敏感目录文件啊什么的。收集多了难免有重复,并且有的也需要合并使用方便。自己就写了一个小小的脚步用来完成这个目的。

0x01 代码

第一次发表文章,希望大家多提意见。抱拳了!

代码我就贴出来了

import osimport time
import argparse
import optparse

def Time(n,p):
  pat_time = p-n
  minute = pat_time/60
  hour = minute/60
  print(int(hour),'小时',int(minute%60),'分钟',int(pat_time%60),'秒')

def __O__(path): #遍历目录,包括目录里的子目录
  f = os.listdir(path) #查看路径下所有文件及目录
  D = open('D.txt','w')
  F = open('F.txt','w')
  for i in f:
    fil = os.path.join(path,i) #dir是绝对路径
    if os.path.isdir(fil): #如果fil是目录加入到D里
      D.write(fil)
      __O__(fil) #继续执行当前函数
    if os.path.isfile(fil): #如果是文件,加入到F里
      F.write(fil)
  D.close()
  F.close()


def type_txt(file,path): #传入路径,文件名(列表)
  try:
    n = time.time()
    print(' 准备执行!')
    path_list = []  #存放需要打开的文件
    di = {}
    date_list = []
    dict_li = ['new_php.txt', 'new_asp.txt', 'new_aspx.txt', 'new_jsp.txt', 'new_dir.txt', 'new_mdb.txt',] #合并的字典列表
    for i in dict_li:
      di = []
    for h in file:               #合并给的路径及文件名
      fn = os.path.join(path, h)
      path_list.append(fn)
    for j in path_list: #循环需要打开的文件列表
      print(' 文件为:',j)
      with open(j, 'r') as f:
        date = f.readlines()

        print(' -t 当前执行文件为: ' + j,'数量:',len(date))
        for i in date:     #读取每一行
          af, aq = os.path.splitext(i)        #分裂成路径及后缀名
          aq = aq.lower()
          if i != '\n':               #如果没有换行符会加上
            if '\n' not in i:
              i = i + '\n'
              aq+='\n'
            if aq == '.php\n' and i not in di['new_php.txt']:            #判读后缀名并通过后缀名放到相应的字典中,同时判读字典对应的文件列表中是否存在,如果是False则加入进去
              di['new_php.txt'].append(i)
            elif aq == '.asp\n' and i not in di['new_asp.txt']:
              di['new_asp.txt'].append(i)
            elif aq == '.aspx\n' and i not in di['new_aspx.txt']:
              di['new_aspx.txt'].append(i)
            elif aq == '.jsp\n' and i not in di['new_jsp.txt'] :
              di['new_jsp.txt'].append(i)
            elif (aq == ('.ini\n' or '.xml\n' or '.cgi\n' or '.log\n' or '.db\n' or '.mdb\n' or '.sql\n' or '.xml\n' or '.htm\n' or '.html\n' or '.bak\n' or '.dbf\n' or '.zip\n' or '.rb\n' or '.js\n' or '.css\n' or '.html?\n')) and i not in di['new_mdb.txt']:
              di['new_mdb.txt'].append(i)
            elif i not in di['new_dir.txt'] :
              di['new_dir.txt'].append(i)
        f.close()
  except (UnicodeDecodeError) as e:
      print("字典文件中有错误请检查是否是字典",e)
  di1,fi = os.path.split(path)
  print(' 分类完毕......准备写入')
  for key in di:                 #写入到文件中
    o = open(key,'w')
    for i in di[key]:
      o.write(i)
  Time(n, time.time())

def dir_txt(path):                                   #传进去路径,返回来的是路径下的后缀为txt的文件。如果没有则是当前路径。
  dir_txt = []
  a = os.listdir(path)
  for i in a:
    dd, ff = os.path.splitext(i)
    if ff == '.txt':
      dir_txt.append(i)
  return dir_txt




def password(file,path):
  try:
    path_list = []
    password_list = []
    for i in file:
      pathl = os.path.join(path,i)
      path_list.append(pathl)
    print(" 开始去除重复.....")
    for i in path_list:      #重复每一个给定的密码文件
      F = open(i,'r')
      txt = F.readlines()
      F.close
      for j in txt:    #读取每一个密码文件,并且判读是否存在于password_list列表,如不存在则放进列表
        if '\n' not in j:
          j+='\n'
        if j not in password_list:
          password_list.append(j)
    print(" 完成,并且准备写入。")
    file = open('Password.txt','w')    #打开即将写入的Password.txt,把passowrd_list列表数据全部写入进去
    for i in password_list:
      file.write(i)
    file.close
    print(" 运行完毕。")
  except :
    print(" 请检查文件是否存在,路径是否正确。")

def Optparse():
  try:
    parser = argparse.ArgumentParser(
    """把字典分类:new_php.txt,new_asp.txt,new_aspx.txt,new_jsp.txt,new_mdb.txt,new_dir.
    
    
    
                     -t -path C:\\x\\x\*   
                     -t -path C:\\x\\x -file xxx.txt,xx.txt   """)

    group = parser.add_mutually_exclusive_group()
    group.add_argument('-p',action='store_true',help='密码合并')           #-p 和-t参数是互相排斥的,并不能一起使用。
    group.add_argument('-t',action='store_true',help='后台目录字典合并',)
    parser.add_argument('-file', type=str, help='输入的文件',required=False)
    parser.add_argument('-path',type=str,help='你所指定的目录',required=False)
    args = parser.parse_args()

    if args.t:      #判读t是否真
      if args.file == None:
        path,file = os.path.split(args.path)
        dir__txt = dir_txt(path)
        type_txt(dir__txt,path)
      elif args.file != None:
        list_file = args.file.split(',')
        type_txt(list_file,args.path)
    elif args.p:    #判读p是否真
      if args.file == None:
        path, file = os.path.split(args.path)
        dir__txt = dir_txt(path)
        password(dir__txt,path)
      elif args.file != None:
        list_file = args.file.split(',')
        password(list_file,args.path)
    else:
      print(" 错误请检查输入。")
  except (KeyboardInterrupt):
    print(' 以退出')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
判断网页编码的方法python版
Aug 12 Python
Python 多进程和数据传递的理解
Oct 09 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
实例讲解python中的序列化知识点
Oct 08 Python
celery4+django2定时任务的实现代码
Dec 23 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
python爬虫 正则表达式解析
Sep 28 Python
初学者学习Python好还是Java好
May 26 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
Feb 26 #Python
利用python实现对web服务器的目录探测的方法
Feb 26 #Python
python selenium 弹出框处理的实现
Feb 26 #Python
python实现学员管理系统
Feb 26 #Python
python实现电子产品商店
Feb 26 #Python
Python selenium根据class定位页面元素的方法
Feb 26 #Python
python实现诗歌游戏(类继承)
Feb 26 #Python
You might like
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
python实现简单遗传算法
2018/03/19 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
护理专业本科生自荐信
2013/10/01 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
档案信息化建设方案
2014/05/16 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书