python基于字典多线程目录枚举工具

2023-11-14

基于字典多线程目录枚举工具

整体思路

  • 命令行参数获取
  • 字典文件的读取
  • 多线程访问

命令行参数获得:

使用模块:sys,getopt
		sys.argv获取命令行执行的数据
参数获得:opt, args =  getopt.getopt(sys.argv[1:],"u:t:d:")

字典文件读取:

python文件读取:with open(filename,mode") as f
			  f.readlines()
多线程:一个线程读取固定数目的字典内容

多线程:

python多线程:threading.Thread(target,args=())
			 start()

扫描给定URL是否存在字典中的目录
-u url -t 线程数 -d 字典名称

import getopt
import sys
import math
import threading
import requests


def banner():
    print("*"*51)
    print("*"*2 + " "*11 + "Clay0x7779 DirTools v1.0" + " "*12 + "*"*2)
    print("*"*51)
banner()

# python dirtools.py -u url -t thread -d dictionary

def usage():
    print("This is the tools usage")
    print("python dirtools.py -u url -t thread -d dictionary")

# opts, args = getopt.getopt(sys.argv[1:], "u:t:d:")

# print(opts)
# print(args)

def start():
    if len(sys.argv) == 7 :
        #Trun len
        opts, args = getopt.getopt(sys.argv[1:], "u:t:d:")
        for k,v in opts:
            if k == "-u":
                url = v
            elif k == "-t":
                threads = v
            elif k == "-d":
                dic = v
        print("url:" +url)
        print("threads:" +threads)
        print("dic:" +dic)
        multi_scan(url,threads,dic)
    else:
        print("Error Argument!")
        usage()
        sys.exit()
#
def multi_scan(url,threads,dic):
    # 字典文件
    # 读取行数
    # 制作每一个线程读取的字典列表
    result_list = []
    threads_list = []
    with open(dic,"r") as f:
        dic_list = f.readlines()
        if len(dic_list) % int(threads) == 0:
            thread_read_line_num = len(dic_list) / int(threads)
        else:
            thread_read_line_num = math.ceil(len(dic_list) / int(threads))

        i = 0
        temp_list = []
        for line in dic_list:
            i += 1
            if i % thread_read_line_num == 0:
                temp_list.append(line.strip())
                result_list.append(temp_list)
                temp_list = []
            else:
                temp_list.append(line.strip())

    for i in result_list:
        threads_list.append(threading.Thread(target=scan,args=(url,i)))
    for t in threads_list:
        t.start()

def scan(url,dic):
    #扫描 调用requests模块
    for line in dic:
        r = requests.get(url+'/'+line)
        if r.status_code == 200:
            print(r.url + ":" + str(r.status_code))
start()
测试

在这里插入图片描述
在这里插入图片描述

人生漫漫其修远兮,网安无止境。
一同前行,加油!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python基于字典多线程目录枚举工具 的相关文章

随机推荐

  • 基于内容的图像检索(CBIR) ——以图搜图

    文章目录 一 实现原理 二 基于内容的图像检索的特征提取 三 代码实现 打赏 在CBIR中 图像通过其视觉内容 例如颜色 纹理 形状 来索引 一 实现原理 首先从图像数据库中提取特征并存储它 然后我们计算与查询图像相关的特征 最后 我们检索
  • use MinGW compile googletest on windows

    table of contents enviornments brief description of software installation MinGW installation cmake installation googlete
  • word文档墨迹工具的笔不能用_CourseMaker微课制作教程43:手写设备在Word、PPT、PDF里的使用方法大全...

    首先我们要有个概念 手写设备 数位板 纸笔手写板 数位屏 在各个软件里能否书写 跟这些设备硬件本身并没有什么关系 不是说这个牌子的手写板在A软件里能用 那个牌子的手写板在A软件里不能用 能否在软件里手写 主要还是看软件里的手写功能组件是否完
  • linux驱动12:主设备号和次设备号

    dev目录下执行ls l 设备文件项的最后修改日期前的用逗号分割的两个数 对设备文件来说就是相应的主设备号和次设备号 第一个字符c表示字符设备 b表示块设备 主设备号标识设备对应的驱动程序 次设备号由内核使用 用于正确确定设备文件所指的设备
  • [答疑]《软件方法》自测题为什么不直接给出答案?

    软件方法 下 分析和设计第8章连载 20210518更新 gt gt 问题 很多同学说 软件方法 各章的自测题要扫码到全对才知道答案 比较费劲 能不能直接给出答案 统一回答如下 这是有意为之的 这些题是多年积累下来 围绕着书中的知识点精心准
  • 普通光照模型:unityshader

    我们都知道物体表面的光照是由 自发光 镜面光 高光 环境光 漫反射得出来的 环境光 光照系数 环境光颜色 Ambient K GlobalAmbient 漫反射 Diffuse K LightColor max dot N L 0 反射光线
  • 【linux系统安装nvm】

    linux系统安装nvm 直接用脚本一键安装 sudo apt install curl curl https raw githubusercontent com creationix nvm master install sh bash
  • React Antd HelloWorld

    react antdesign helloworld 安装antd 第一个示例HelloWorld 报错解决 快速解决 安装antd 使用 npm 或 yarn 安装 我们推荐使用 npm 或 yarn 的方式进行开发 不仅可在开发环境轻松
  • visio 2010激活教程

    一 下载office2010toolkit zip 若下载链接失效 手动搜索office2010toolkit http ys c ys168 com 605279628 o4W138W45JIPI5SiuWf5 office2010too
  • NLP 做词频矩阵时,遇到特大矩阵触发memoryerror的处理方式

    昨天做NLP词频矩阵处理时候 遇到内存不足的问题 遇到memoryerror的情况 查了不少资料 都让我在大的机器上跑 但是有时候资源有限 由于我的句子中的每个词语都是重要的 所以不设置停用词 也就是countvectoirze才符合我的需
  • ffmpeg--使用命令+EasyDarwin推流笔记本摄像头

    手头没有网络摄像头 采用ffmpeg EasyDarwin 笔记本摄像头模拟一个网络摄像头用来开发程序 有一些小细节记录一下 EasyDarwin安装使用 流媒体服务器easydarwin的安装还是非常方便的 参考官方给的readme 几分
  • 三层架构实现增删改查操作封装

    文章目录 概要 整体架构流程 技术名词解释 技术细节 小结 概要 三层架构 三层架构分为 数据 dao 层 业务 service 层 控制 controller 层 1 表示层 USL 即User Show Layer 视图层 a 前台 对
  • 学习材料收集

    记一个好帖子 http www wowotech net
  • 一个例子让你看清线程调度的随机性

    粉丝提问 c语言 如何定义一个和库函数名一样的函数 并在函数中调用该库函数 一个端口号可以同时被两个进程绑定吗 两个线程 两个互斥锁 怎么形成一个死循环 一个例子让你看清线程调度的随机性 线程调度的几个基本知识点 多线程并发执行时有很多同学
  • 【STM32】中断向量表

    我是通过这个进行学习的 我觉得讲的很好 这里我稍加修改 作为自己的学习笔记 嵌入式杂谈之中断向量表 前言 STM32根据boot引脚的配置方式有3种启动方式 但是无论哪一种方式 对于STM32来说都是从0x0000 0000启动 STM32
  • Ubuntu18下载安装IDEA最新版

    下载地址 官网地址 下载 选择功能更强大的一版 点击UItimate下面的Download 保存 TAR GZ压缩文件 解压到 opt文件下 找到压缩文件所在的文件夹 右键在终端打开 输入下面代码 记得改成自己文件包的名字 sudo tar
  • Spring之底层架构核心概念解析

    目录 一 BenDefinition 二 Spring定义Bean的方式 三 BeandefinitionReader 四 AnnotatedBeandefinitionReader 五 XmlBeanDefinitionReader 六
  • 修改NuGet包默认存放位置

    默认情况下 NuGet下载的包存放在系统盘 C盘中 这样一来 时间长了下载的包越多 C盘占用的空间也就越多 1 问题描述 默认情况下 NuGet下载的包存放在系统盘 C盘中 一般在路径C Users 用户 nuget packages下 这
  • 2021-05-23unity【OnEnable,  OnDisable,  OnDestroy】(这是三个方法函数)-(声明方法即可)(常用于设置游戏结束运行后的状态)   

    3 OnEnable OnDisable OnDestroy 这是三个方法函数 声明方法即可 常用于设置游戏结束运行后的状态 OnEnable 当对象变为可用或激活状态时 此函数被调用 注 这里的对象指的是 挂有该脚本的对象 OnDisab
  • python基于字典多线程目录枚举工具

    基于字典多线程目录枚举工具 整体思路 命令行参数获取 字典文件的读取 多线程访问 命令行参数获得 使用模块 sys getopt sys argv获取命令行执行的数据 参数获得 opt args getopt getopt sys argv