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 11 Python
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
深入理解Python中字典的键的使用
Aug 19 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
python使用KNN算法识别手写数字
Apr 25 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
简单了解python PEP的一些知识
Jul 13 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 Python
 Python 中 logging 模块使用详情
Mar 03 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
php中Ctype函数用法详解
2014/12/09 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
Python ini文件常用操作方法解析
2020/04/26 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
企业宣传策划方案
2014/05/29 职场文书
标准单位租车协议书
2014/09/23 职场文书
青年联谊会致辞
2015/07/31 职场文书
Python打包为exe详细教程
2021/05/18 Python
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL