Python安全工具开发--01--IP扫描工具(类方法的使用)

通常我们使用Python进行类工具开发的时候,都会使用一些初始化的方法进行参数的定义,

今天我们来分享几个比较方便快捷的方法,方法如下:

我们首先继承一个多线程的类,方便进行多线程和队列的排序,当然其中的方法我们今天不做过多的赘述。

class DirScan(threading.Thread):

    def __init__(self, url ,queue, name=None):
        """
        初始化 传递了一个队列进来
        :param queue: 队列里面放的就是我们需要去请求的路径
        :param name:
        """
        super().__init__(name)
        self.__queue = queue
        self.__save_path = "./result.txt"
        self.url = url 

其中 self.url  就是我们初始化类的时候 构造函数所需要的传参/也就是我们这个方法类所需要到的属性

以下是我自己封装的一个ip扫描的类 通过打开固定的txt文档来进行扫描

# coding=utf-8
# Author: HSJ
# 2023/9/13 15:21
import logging
import os
import threading
from queue import Queue
import time
from python_tools.common.requests_method import Request
import logging
import time

class DirScan(threading.Thread):

    def __init__(self, queue, name=None):
        """
        初始化 传递了一个队列进来
        :param queue: 队列里面放的就是我们需要去请求的路径
        :param name:
        """
        super().__init__(name)
        self.__queue = queue
        self.__save_path = "./result.txt"
        # self.__url_all = []

    def run(self):
        # 从队列里面去取数据, 什么时候需要去取数据?只要队列不为空就去取
        while not self.__queue.empty():
            try:
                # 从队列里面取出一个路径
                web_dir = self.__queue.get()
                res = Request.url_get(url=web_dir)
                if res.status_code in [200, 403, 302]:
                    # self.__url_all.append(web_dir)
                    # with open(self.__save_path,"a+"):
                    #     for i in self.__url_all:
                    #         print(i)
                    print(f"[**]{web_dir}...{res.status_code}")
            except Exception :
                pass


def start(url, type, count):
    """
    启动扫描的方法
    :param url: 需要扫描的网站
    :param type: 网站的类型
    :param count: 线程的数量
    :return:
    """
    # 准备一个队列
    queue = Queue()
    # 先去读取字典
    dict_path = f"./{type}.txt"
    # 读取字典
    with open(dict_path) as f:
        for dir in f:
            dir_name = dir.rstrip("\n")
            queue.put(f'{url}{dir_name}')

    # 准备容器
    threads = []
    # 创建线程
    for i in range(count):
        threads.append(DirScan(queue))
    for t in threads:
        t.start()
    for t in threads:
        t.join()


if __name__ == '__main__':
    start_time = time.time()
    url = "http://xxx.xxxxxxxx.com/"
    type = "php"
    thread_count = 5
    start(url, type, thread_count)
    end_time = time.time()
    print(f"消耗的时间:{end_time-start_time}")

使用的时候只需要把url入参修改即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值