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实现巡检系统(solaris)示例
Apr 02 Python
Python的加密模块md5、sha、crypt使用实例
Sep 28 Python
浅析Python中的多进程与多线程的使用
Apr 07 Python
机器学习python实战之决策树
Nov 01 Python
python编写Logistic逻辑回归
Dec 30 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
如何用python写个模板引擎
Jan 14 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 Xdebug的安装与使用详解
2013/06/20 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
jQuery Ajax之load()方法
2009/10/12 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
wxpython学习笔记(推荐查看)
2014/06/09 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
python实现XML解析的方法解析
2019/11/16 Python
使用python turtle画高达
2020/01/19 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
美容师的职业规划书
2013/12/27 职场文书
学生励志演讲稿
2014/01/06 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
同事欢送会致辞
2015/07/31 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
python文件与路径操作神器 pathlib
2022/04/01 Python