iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python利用socket实现多进程的端口扫描器
  • 636
分享到

Python利用socket实现多进程的端口扫描器

Python 官方文档:入门教程 => 点击学习

摘要

作为开发人员经常需要查看服务的端口开启状态判断服务是否宕机。 特别是部署的服务比较多的情况下,可能存在几个甚至几十个服务端口的占用,于是我利用Socket不断向服务发送请求的方式来判

作为开发人员经常需要查看服务的端口开启状态判断服务是否宕机。

特别是部署的服务比较多的情况下,可能存在几个甚至几十个服务端口的占用,于是我利用Socket不断向服务发送请求的方式来判断端口服务是否已经完成开启。

其中加入多进程的调用方式来提高端口扫描的效率,供大家参考!

首先,我们将需要的python模块全部导入到我们的代码块中,若是没有安装的模块使用pip的当时安装一下即可。

# Importing the socket module.
import socket

# Importing the datetime module from the datetime package.
from datetime import datetime

# It's a shortcut for `from multiprocessing import Pool`
from multiprocessing.dummy import Pool

# It's a shortcut for `from loguru import logger`
from loguru import logger

然后,创建一个端口扫描类PortScanner来完成对整个业务逻辑的处理,另外,封装到类中也便于大家参考和修改。

class PortScanner:
    def __init__(self):
        """
        A constructor. It is called when an object is created from a class and it allows the class to initialize the
        attributes of a class.
        """
        super(PortScanner, self).__init__()
        self.remote_ip = None
        self.ports = []

    def scanner(self, port):
        """
        It scans the port.

        :param port: The port you want to scan
        """
        try:
            socket_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            result_ = socket_.connect_ex((self.remote_ip, port))
            if result_ == 0:
                logger.info('地址:{} 端口:{} 已成功开启!'.fORMat(self.remote_ip, port))
            else:
                logger.info('地址:{} 端口:{} 未开启!'.format(self.remote_ip, port))
        except Exception as e:
            logger.error('端口扫描出现异常!')
        finally:
            socket_.close()

    def start(self):
        """
        It starts the game.
        """
        remote_server = input("输入要扫描的主机地址(127.0.0.1):")
        if remote_server.strip() == '':
            remote_server = '127.0.0.1'
        self.remote_ip = socket.gethostbyname(remote_server)
        port_range = input("输入要扫描的端口范围(1,50000):")
        scanner_ports = []
        if port_range.strip() == '':
            port_range = '1,50000'
        scanner_ports = [n for n in range(int(port_range.split(',')[0]), int(port_range.split(',')[1]))]
        socket.setdefaulttimeout(0.5)
        start_ = datetime.now()
        pool = Pool(processes=10)
        pool.map(self.scanner, scanner_ports)
        pool.close()
        pool.join()
        end_ = datetime.now()
        logger.info('所有端口扫描已完成,总共耗时:{}'.format(str(end_ - start_)))

使用Python模块中的main函数调用整个端口扫描器执行扫描任务。

# It's a common idiom to determine if the script is being run directly or being imported.
if __name__ == '__main__':
    scanner_ = PortScanner()
    scanner_.start()

到此这篇关于Python利用socket实现多进程的端口扫描器的文章就介绍到这了,更多相关Python socket多进程端口扫描内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python利用socket实现多进程的端口扫描器

本文链接: https://www.lsjlt.com/news/174393.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python利用socket实现多进程的端口扫描器
    作为开发人员经常需要查看服务的端口开启状态判断服务是否宕机。 特别是部署的服务比较多的情况下,可能存在几个甚至几十个服务端口的占用,于是我利用socket不断向服务发送请求的方式来判...
    99+
    2022-12-08
    Python socket多进程端口扫描 Python socket 端口扫描 Python 端口扫描
  • Python利用tkinter和socket实现端口扫描
    目录题目参考code题目 请设计并实现一款主机端口扫描程序。程序根据用户输入的域名或IP地址,可以查询该主机的开放的端口号。 例如: 并有一定的异常处理 参考code impor...
    99+
    2022-12-08
    Python tkinter socket端口扫描 Python socket端口扫描 Python 端口扫描
  • 利用Python脚本写端口扫描器socket,python-nmap
    目录Socket模块编写扫描给定主机是否开放了指定的端口python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放前言: 一个用python写的简单的端口扫描...
    99+
    2024-04-02
  • 利用Python实现端口扫描器的全过程
    目录socket概念 socket基本用法 创建tcp套接字 创建udp套接字 socket内建方法实现端口扫描 总结socket概念 socket又称套接字,可以看做是不同主机之...
    99+
    2024-04-02
  • Python怎么用tkinter和socket实现端口扫描
    这篇文章主要介绍“Python怎么用tkinter和socket实现端口扫描”,在日常操作中,相信很多人在Python怎么用tkinter和socket实现端口扫描问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-04
  • Python项目实战:使用多线程进行TCP端口扫描
    前言今天为大家一个利用Python扫描开放主机的TCP端口,首先你要查看其中的开放的端口,创建一个TCP全连接扫描器,一般使用socket来创建连接器的,测试当前主机和端口是否开放,直接使用socket连接导入第三方库...
    99+
    2023-06-02
  • Pyhacker实现端口扫描器
    目录00x1:需要用到的模块00x2:创建socket对象00x3:处理ip00x4:测试用例00x5:设定扫描端口00x6:完整代码主要是以Nmap举例编写,其中涉及的协议暂不过多...
    99+
    2024-04-02
  • Python 端口扫描(全连接,无多线程
    '''这是一个端口全连接扫描的脚本,扫描结果会比较准确,但是比较费时间''' '''运行环境 Python3 ''' from socket import * def portScanner(host,port): try: ...
    99+
    2023-01-31
    多线程 端口扫描 Python
  • 利用python实现IP扫描
    需求:写一个脚本,判断192.168.11.0/24网络里,当前在线ip有哪些?知识点:1 使用subprocess模块,来调用系统命令,执行ping 192.168.11.xxx 命令2 调用系统命令执行ping命令的时候,会有返回值(p...
    99+
    2023-01-31
    python IP
  • 基于C#实现端口扫描器(单线程和多线程)
    目录一、新建项目并设置界面二、单线程实现端口扫描1. 编写代码2. 运行结果三、多线程实现端口扫描1. 编写代码2. 运行结果四、总结一、新建项目并设置界面 新建项目: 选择Wind...
    99+
    2024-04-02
  • 用Python实现一个端口扫描,只需简单
    0、秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术。 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己。 秘密扫描能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。由于没有包含...
    99+
    2023-01-30
    只需 简单 端口扫描
  • 基于C#如何实现端口扫描器
    这篇文章给大家分享的是有关基于C#如何实现端口扫描器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、新建项目并设置界面新建项目:选择Windows窗体项目应用(.Net Framework):设置项目名和路径:...
    99+
    2023-06-21
  • C#单线程和多线程端口扫描器详解
    目录一、项目创建以及页面设计(一)项目新建(二)页面设计二、单线程实现端口扫描(一)代码实现(二)运行结果三、多线程实现端口扫描(一)程序实现(二)运行结果四、总结五、参考资料本文为...
    99+
    2024-04-02
  • go 实现简易端口扫描的示例
    我在代码里定义了两个通道,分别用于生产端口和限制连接数,如果不限制连接数,容易被对方检测到或导致对方服务器不能正常运行。 // 生产端口 var port = make(chan...
    99+
    2024-04-02
  • 扫描端口占用情况的python脚本
        之前项目上线前,领导要求让写一个脚本用来判断端口的占用情况。由于现在python3使用也比较多,基于python2修改了一下,做了个python3版本的,现在做一下总结。一、python脚本实现扫描端口:    pthon2下代码如...
    99+
    2023-01-31
    端口 脚本 情况
  • 用Python编写一个高效的端口扫描器
    PyPortScanner Github 背景 具体实现 I 利用TCP握手连接扫描一个给定的ipport地址对 II 多线程扫描端口 III 多线程扫描多个网站 IV 总结利用这些代码扫描给定网站并输出结果 ...
    99+
    2023-01-31
    扫描器 高效 端口
  • C#单线程和多线程的端口扫描器应用比较详解
    目录一、准备工作二、端口扫描器(单线程)三、端口扫描器(多线程)四、总结本文章使用C#编程,制作一个端口扫描器,能够扫描本机有哪些端口开放了,并显示出来,分别使用单线程和多线程进行了...
    99+
    2024-04-02
  • 一文详解Go如何实现端口扫描器
    本篇文章给大家带来了关于Go的相关知识,其中主要跟大家介绍Go怎么实现端口扫描器,有代码示例,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。利用 GO 批量扫描服务器端口1、端口扫描器 V1 - 基本操作package mainimpo...
    99+
    2023-05-14
    Go
  • PyHacker编写指南引用Nmap模块实现端口扫描器
    目录编写:调试扫描:方法扫描端口输出状态:引用Nmap库实现扫描功能,本节课比较简单一看就会。 编写环境:Python2.x 编写: 首先安装Nmap程序,并添加环境变量 pip i...
    99+
    2024-04-02
  • 利用LyScript实现应用层钩子扫描器
    Capstone 是一个轻量级的多平台、多架构的反汇编框架,该模块支持目前所有通用操作系统,反汇编架构几乎全部支持,本篇文章将运用LyScript插件结合Capstone反汇编引擎实...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作