python 扫描局域网主机、爆破端口

简介: python 扫描局域网主机、爆破端口
import telnetlib
from multiprocessing import Pool 
import threading
import time
import sys
import re
import os
class Scan():
    def __init__(self,ip,mode):
        self.__ip=ip
        self.__open=[]
        self.__mode=mode
    def check_host(self,ip):
        output = os.popen('ping -n 1 {}'.format(ip)).readlines()
        if('无法访问目标主机' not in ''.join(output)):
            return ip
    def scanning(self):    #探测ip类型  
        ip_list=[]
        if(re.match(r'^\d+?\.\d+?\.\d+?\.\d+?$',self.__ip)):             #单一ip
            output = os.popen('ping -n 1 {}'.format(self.__ip)).readlines()
            if('无法访问目标主机'not  in ''.join(output)):                
                ip_list.append(self.__ip)
        elif(re.match(r'^(\d+?\.\d+?\.\d+?\.)(\d+?)/24$',self.__ip)):    #检测局域网存活主机
            ip_list.clear()
            t=self.__ip.split()[0]
            ip_result=[re.match(r'(\d+?\.\d+?\.\d+?\.)(\d+?)/24',self.__ip).group(1)+str(i) for i in range(0,256)]
            with  Pool(10) as pool:
                ip_result=pool.map(self.check_host,ip_result)
                for i in ip_result:
                    if(i!=None):
                        ip_list.append(i)
        elif(re.match(r'^(\d+?\.\d+?\.\d+?\.)(\d+?)-(\d+?\.\d+?\.\d+?\.)(\d+)$',self.__ip)):   #检测范围内ip
            ip_list.clear()
            min=int(re.match(r'(\d+?\.\d+?\.\d+?\.)(\d+?)-(\d+?\.\d+?\.\d+?\.)(\d+)',self.__ip).group(2))
            max=int(re.match(r'(\d+?\.\d+?\.\d+?\.)(\d+?)-(\d+?\.\d+?\.\d+?\.)(\d+)',self.__ip).group(4))+1
            ip_result=[re.match(r'(\d+?\.\d+?\.\d+?\.)(\d+?)-(\d+?\.\d+?\.\d+?\.)(\d+?)',self.__ip).group(1)+str(i) for i in range(min,max)]
            with  Pool(10) as pool:
                ip_result=pool.map(self.check_host,ip_result)
                for i in ip_result:
                    if(i!=None):
                        ip_list.append(i)
        elif(re.match(r'^(\d+?\.\d+?\.\d+?\.)(\d+?),',self.__ip)):   #检测多个自定义ip
            ip_list.clear()
            list_result=self.__ip.split(',')
            for ip in list_result:
                if(re.match(r'\d+?\.\d+?\.\d+?\.\d+?',ip)):
                    output = os.popen('ping -n 1 {}'.format(ip)).readlines()
                    if('无法访问目标主机'not in ''.join(output)):
                        ip_list.append(ip)
        else:
            sys.exit('\n\nthe input of ip is wrong! please try again!')
        if(len(ip_list)==0):
            sys.exit('\n\nthe host of ip inputed is not exits!!!\n\n')
        print("\n\n","扫描进行中".center(21,'*'),"\n")   
        print("\n存活的主机:\n\n"+'\n'.join(ip_list)+'\n\n')
        for ip in ip_list:
            self.__ip=ip
            if(self.__mode==0):
                port_list=[80,8080,443,3306,3389,21,22]
            elif(self.__mode==1):
                port_list=[x for x in range(1,65535)]
            else:
                sys.exit('\nthe input of mode is wrong! please try again!')
            pool=Pool(6)
            list_result=pool.map(self.is_open,port_list)
            pool.close()      
            pool.join()    
            for i in list_result:
                if(i != None):
                    self.__open.append(i)
            self.__open.sort()
            self.Get()
    def is_open(self,port): #判断是否开启
        check=telnetlib.Telnet()  #扫描函数
        try:
            check.open(self.__ip,port)
            return str(port)
        except:
            pass
    def Get(self):
        if(len(self.__open)!=0):
            print("\n "+self.__ip+"开放的端口: \n "+'\n '.join(self.__open)+"\n")
        else:
            print("\n "+self.__ip+"开放的端口: \n "+'\n 没有开放端口'+"\n")
if __name__ == "__main__":
    start=time.time()
    s=Scan(input('\n\nthe type of ip  1. xxx.xxx.xxx.xxx  2. xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx\
    3. xxx.xxx.xxx.xxx/24 4. xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx,…… \ninput ip: '),int(input("\n\n0. scan the usual ports  1. scan all ports\nmode: ")))
    s.scanning()
    # s.Get()
    print("\n扫描用时: "+str(round(time.time()-start,2))+ "s")
    print("\n\n","扫描完成,欢迎下次使用".center(21,'*'),'\n\n')
本程序采用了多线程来自动扫描指定局域网主机、端口
目录
相关文章
|
JSON 测试技术 API
优化你的 REST Assured 测试:设置默认主机与端口、GET 请求与断言
REST Assured 是一个强大的 Java 库,用于简化 RESTful API 测试。本文详解了其核心功能:设置默认主机和端口以减少代码重复、发起 GET 请求并验证响应结果,以及通过断言确保接口行为符合预期。同时推荐 Apipost 工具,助力开发者提升 API 测试效率,实现更高效的接口管理与团队协作。掌握这些技巧,可显著优化测试流程与代码质量。
|
9月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
239 4
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
454 66
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
349 7
|
运维 监控 算法
基于 Python 迪杰斯特拉算法的局域网计算机监控技术探究
信息技术高速演进的当下,局域网计算机监控对于保障企业网络安全、优化资源配置以及提升整体运行效能具有关键意义。通过实时监测网络状态、追踪计算机活动,企业得以及时察觉潜在风险并采取相应举措。在这一复杂的监控体系背后,数据结构与算法发挥着不可或缺的作用。本文将聚焦于迪杰斯特拉(Dijkstra)算法,深入探究其在局域网计算机监控中的应用,并借助 Python 代码示例予以详细阐释。
285 6
|
监控 算法 安全
基于 Python 广度优先搜索算法的监控局域网电脑研究
随着局域网规模扩大,企业对高效监控计算机的需求增加。广度优先搜索(BFS)算法凭借其层次化遍历特性,在Python中可用于实现局域网内的计算机设备信息收集、网络连接状态监测及安全漏洞扫描,确保网络安全与稳定运行。通过合理选择数据结构与算法,BFS显著提升了监控效能,助力企业实现智能化的网络管理。
244 7
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
281 17
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
283 20
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
962 5
|
Linux Python
用python扫描linux开放的端口(3种方式)
这篇文章介绍了三种使用Python实现Linux端口扫描的方法,包括基础版端口扫描、全端口扫描和多线程扫描技术。
600 16

推荐镜像

更多