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编程中函数的使用要点
Mar 20 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
python 有效的括号的实现代码示例
Nov 11 Python
Python 实现数组相减示例
Dec 27 Python
Python如何使用字符打印照片
Jan 03 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
Pytest框架之fixture的详细使用教程
Apr 07 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
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
用js怎么把&字符换成"&amp:"
2006/10/19 Javascript
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
详解mpvue开发小程序小总结
2018/07/25 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
军训的自我鉴定
2013/12/10 职场文书
写给女生的道歉信
2014/01/08 职场文书
大学生军训感想
2014/02/16 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
大学军训的体会
2014/11/08 职场文书
党校毕业个人总结
2015/02/28 职场文书
《开国大典》教学反思
2016/02/16 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android