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 相关文章推荐
有关wxpython pyqt内存占用问题分析
Jun 09 Python
python实现斐波那契数列的方法示例
Jan 12 Python
python使用xslt提取网页数据的方法
Feb 23 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
详解如何设置Python环境变量?
May 13 Python
简单了解python的break、continue、pass
Jul 08 Python
django迁移数据库错误问题解决
Jul 29 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
python机器学习实现oneR算法(以鸢尾data为例)
Mar 03 Python
python多次执行绘制条形图
Apr 20 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面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
支教自我鉴定
2014/01/18 职场文书
校园活动宣传方案
2014/03/28 职场文书
信用卡工资证明范本
2014/10/17 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
新郎婚礼致辞
2015/07/27 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server