IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python编程第二站-基于字典的目录扫描工具 -> 正文阅读

[Python知识库]python编程第二站-基于字典的目录扫描工具

目录

前言

一、基于字典的目录资源破解工具编写

1.工具原理

2.工具思路

二、工具初始化

1.Banner信息函数

2.使用方法信息函数

三、命令行工具参数获得

1.模块介绍

2.参数获得

3. 封装start函数(参数获得内容)

四、字典文件读取

1.python字典文件读取

2.多线程思路

3.扫描函数

五、多线程访问

1.python多线程

六、完整代码如下


前言

????????初学者者工具编写!

????????仅用学习使用,不做其他任何用途!

一、基于字典的目录资源破解工具编写

1.工具原理

????????同目录扫描工具类似;

2.工具思路

如下:

????????1)命令行工具参数获取

????????2)字典读取

????????3)多线程访问

????????4)状态码判断输出结果

????????5)结果分析

二、工具初始化

1.Banner信息函数

????????'''''''''

????????def banner()

????????用于介绍工具和名称

????????'''''''''

# Banner信息函数
def banner():
    print('*'*50)
    print('*'*2+' '*16+'DirBrute v1.0'+' '*17+'*'*2)
    print('*' * 50)

2.使用方法信息函数

'''''''''

1)def usage():

2)使用方法

url:-u

thread:-t

dictionary:-d

'''''''''

# Usage信息
def usage():
    print("This is the tool's usage")
    print('python 基于字典的目录资源破解工具编写.py -u url -t thread -d dictionary.txt')

三、命令行工具参数获得

1.模块介绍

'''''''''

1)sys:sys.argv[n]获取python命令执行的数据

2)getopt:python自带的解析命令行参数模块

'''''''''

2.参数获得

'''''''''

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

'''''''''

opts,args = getopt.getopt(sys.argv[1:],'u:t:d:')
print(opts)     # [('-u', 'www.baidu.com'), ('-t', '5'), ('-d', '.\\pass.txt')]
print(args)     # []

3. 封装start函数(参数获得内容)

def start():
    if(len(sys.argv) == 7):
        # This is ture length
        opts, args = getopt.getopt(sys.argv[1:], 'u:t:d:')
        for k,v in opts:
            if k == '-u':
                url = v
            elif k == '-t':
                thread = v
            elif k == '-d':
                dic = v
        # print('url:'+url)
        # print('thread:'+thread)
        # print('dictionary:'+dic)
        multi_scan(url,thread,dic)
    else:
        print('Error Argument')
        sys.exit()

四、字典文件读取

1.python字典文件读取

'''''''''

1)with open(filename,mode) as f

2)f.readlines()

'''''''''

with open(dic,'r') as f:
        dic_list = f.readlines()
        # print(dic_list)
        # print(len(dic_list))      # 16

2.多线程思路

'''''''''

1)一个线程读取固定数目的字典文件内容

2)制作多线程使用的字典列表(存储是以列表的格式)

'''''''''

# 第二部,确定读取的行数
        # len(dic_list)/thread
        if len(dic_list) % int(thread) == 0:
            thread_read_line_num = len(dic_list) / int(thread)
        else:
            thread_read_line_num = math.ceil(len(dic_list) / int(thread))     # math.ceil向上取整,结果为4;若不加这个math.ceil,结果为3.2,不现实;
        # print(thread_read_line_num)
        # 第三步制作一个线程读取的字典列表 [[t1],[t2],[t3],[t4]]
        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())

        # print(result_list)

3.扫描函数

def scan(url,dic):
    # 实现扫描功能
    for line in dic:
        r = requests.get(url+'/'+line)
        if r.status_code == 200:
            print(r.url+' : '+str(r.status_code))

五、多线程访问

'''''''''

1.python多线程

threading.Thread(target=,args=())

start()

# 线程扫描
for i in result_list:
   thread_list.append(threading.Thread(target=scan,args=(url,i)))
for t in thread_list:
   t.start()

六、完整代码如下

# coding=utf8
# @time:2022/5/7 9:47
# Author 浩宇

# 需要使用到的python模块
import sys,getopt,math,threading,requests

# ---------------------------------------------------------------
# python 基于字典的目录资源破解工具编写.py -u url -t thread -d dictionary.txt
# ---------------------------------------------------------------
# Banner信息函数
def banner():
    print('*'*50)
    print('*'*2+' '*16+'DirBrute v1.0'+' '*17+'*'*2)
    print('*' * 50)


# Usage信息
def usage():
    print("This is the tool's usage")
    print('python 基于字典的目录资源破解工具编写.py -u url -t thread -d dictionary.txt')


# opts,args = getopt.getopt(sys.argv[1:],'u:t:d:')
# print(opts)     # [('-u', 'www.baidu.com'), ('-t', '5'), ('-d', '.\\pass.txt')]
# print(args)     # []

# 封装start函数(参数获得内容)
def start():
    if(len(sys.argv) == 7):
        # This is ture length
        opts, args = getopt.getopt(sys.argv[1:], 'u:t:d:')
        for k,v in opts:
            if k == '-u':
                url = v
            elif k == '-t':
                thread = v
            elif k == '-d':
                dic = v
        # print('url:'+url)
        # print('thread:'+thread)
        # print('dictionary:'+dic)
        multi_scan(url,thread,dic)
    else:
        print('Error Argument')
        sys.exit()



# 多线程
def multi_scan(url,thread,dic):
    result_list = []
    thread_list = []
    # 第一步读取字典文件
    with open(dic,'r') as f:
        dic_list = f.readlines()
        # print(dic_list)
        # print(len(dic_list))      # 16
        # 第二部,确定读取的行数
        # len(dic_list)/thread
        if len(dic_list) % int(thread) == 0:
            thread_read_line_num = len(dic_list) / int(thread)
        else:
            thread_read_line_num = math.ceil(len(dic_list) / int(thread))     # math.ceil向上取整,结果为4;若不加这个math.ceil,结果为3.2,不现实;
        # print(thread_read_line_num)
        # 第三步制作一个线程读取的字典列表 [[t1],[t2],[t3],[t4]]
        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())

        # print(result_list)
    # 线程扫描
    for i in result_list:
        thread_list.append(threading.Thread(target=scan,args=(url,i)))
    for t in thread_list:
        t.start()

def scan(url,dic):
    # 实现扫描功能
    for line in dic:
        r = requests.get(url+'/'+line)
        if r.status_code == 200:
            print(r.url+' : '+str(r.status_code))



banner()
usage()
start()

效果展示:

更多安全分享,请关注【安全info】微信公众号!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 09:54:14  更:2022-05-14 09:56:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:44:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码