zoukankan      html  css  js  c++  java
  • python3实现telnet查看IP地址段端口开放情况

    1、python3实现IP地址段打印

     1 #!/usr/bin/python3
     2 #-*- coding:utf-8 -*-
     3 
     4 #编写环境  windows 7 x64 + Python3.7.0
     5 #python3实现IP地址段打印
     6 
     7 #ip转换方法
     8 def ip2num(ip):
     9     ip=[int(x) for x in ip.split('.')]
    10     return ip[0] <<24 | ip[1]<<16 | ip[2]<<8 |ip[3]
    11 def num2ip(num):
    12     return '%s.%s.%s.%s' %( (num & 0xff000000) >>24,
    13                             (num & 0x00ff0000) >>16,
    14                             (num & 0x0000ff00) >>8,
    15                             num & 0x000000ff )
    16 
    17 #把输入的ip范围组合成一个list形式
    18 def get_ip(ip):
    19     start,end = [ip2num(x) for x in ip.split('-') ]
    20     return [ num2ip(num) for num in range(start,end+1) if num & 0xff ]
    21     
    22     
    23 if __name__ == '__main__':
    24     iplist = get_ip('10.10.10.1-10.10.10.10')
    25     print(iplist)

    2、python3多线程实现telnet查看IP地址段端口开放情况

     1 #!/usr/bin/python3
     2 #-*- coding:utf-8 -*-
     3 
     4 #编写环境  windows 7 x64 + Python3.7.0
     5 #python3实现telnet查看IP地址段端口开放情况
     6 
     7 import telnetlib
     8 import threading
     9 import time
    10 
    11 #ip转换方法
    12 def ip2num(ip):
    13     ip=[int(x) for x in ip.split('.')]
    14     return ip[0] <<24 | ip[1]<<16 | ip[2]<<8 |ip[3]
    15 def num2ip(num):
    16     return '%s.%s.%s.%s' %( (num & 0xff000000) >>24,
    17                             (num & 0x00ff0000) >>16,
    18                             (num & 0x0000ff00) >>8,
    19                             num & 0x000000ff )
    20 
    21 #把输入的ip范围组合成一个list形式
    22 def get_ip(ip):
    23     start,end = [ip2num(x) for x in ip.split('-') ]
    24     return [ num2ip(num) for num in range(start,end+1) if num & 0xff ]
    25     
    26 
    27 def scan(ip,port):
    28     
    29     try:
    30         #server = telnetlib.Telnet(ip, port, timeout=10)
    31         server = telnetlib.Telnet() # 创建一个Telnet对象
    32         
    33         server.open(ip,port)         # 利用Telnet对象的open方法来创建TCP连接测试端口是否开放
    34         
    35         #a表示以追加的形式将端口开放的ip列出来
    36         file = open('thefile.txt', 'a')
    37         file.write(ip+" "+port+"
    ")
    38         file.close()
    39         print('{0} port {1} is open'.format(ip, port))
    40     except Exception as e:
    41         print('{0} port {1} is off'.format(ip, port))
    42         print(e)
    43 
    44  
    45 if __name__ == '__main__':
    46     iplist = get_ip('10.10.10.1-10.10.10.10')
    47     print(iplist)
    48     
    49     starttime = time.time()
    50     portlist=['22','80']
    51     threads = []
    52     for port in portlist:
    53         for ip in iplist:
    54             t = threading.Thread(target=scan,args=(ip,port))
    55             t.start()
    56             threads.append(t)
    57     
    58     for t in threads:
    59         t.join()
    60     endtime = time.time()
    61     print('一共运行了{0}秒'.format((endtime-starttime)))

    3、python3协程实现telnet查看IP地址段端口开放情况

     1 #!/usr/bin/python3
     2 #-*- coding:utf-8 -*-
     3 
     4 #编写环境  windows 7 x64 + Python3.7.0
     5 #python3实现telnet查看IP地址段端口开放情况
     6 
     7 import telnetlib
     8 import gevent
     9 import time
    10 
    11 #ip转换方法
    12 def ip2num(ip):
    13     ip=[int(x) for x in ip.split('.')]
    14     return ip[0] <<24 | ip[1]<<16 | ip[2]<<8 |ip[3]
    15 def num2ip(num):
    16     return '%s.%s.%s.%s' %( (num & 0xff000000) >>24,
    17                             (num & 0x00ff0000) >>16,
    18                             (num & 0x0000ff00) >>8,
    19                             num & 0x000000ff )
    20 
    21 #把输入的ip范围组合成一个list形式
    22 def get_ip(ip):
    23     start,end = [ip2num(x) for x in ip.split('-') ]
    24     return [ num2ip(num) for num in range(start,end+1) if num & 0xff ]
    25     
    26     
    27 def scan(ip,port):
    28     
    29     try:
    30         #server = telnetlib.Telnet(ip, port, timeout=10)
    31         server = telnetlib.Telnet() # 创建一个Telnet对象
    32         
    33         server.open(ip,port)         # 利用Telnet对象的open方法来创建TCP连接测试端口是否开放
    34         
    35         #a表示以追加的形式将端口开放的ip列出来
    36         file = open('thefile.txt', 'a')
    37         file.write(ip+" "+port+"
    ")
    38         file.close()
    39         print('{0} port {1} is open'.format(ip, port))
    40     except Exception as e:
    41         print('{0} port {1} is off'.format(ip, port))
    42         print(e)
    43     
    44     
    45 if __name__ == '__main__':
    46     iplist = get_ip('10.10.10.1-10.10.10.10')
    47     print(iplist)
    48     
    49     portlist=['22','80']
    50     starttime = time.time()
    51     
    52     #单线程模式
    53     '''
    54     for port in portlist:
    55         for ip in iplist:
    56             print(scan(ip,port))
    57     '''
    58     
    59     #协程模式,多并发
    60     #下面这句的意思就是循环portlist列表里面的port,循环iplist列表里面的ip,全部加到协程(gevent)里面,一起并发启动执行
    61     threads = [gevent.spawn(scan, ip,port) for ip in iplist for port in portlist]
    62     gevent.joinall(threads)
    63     
    64     endtime = time.time()
    65     print('一共运行了{0}秒'.format((endtime-starttime)))

    4、参考

    python批量Telnet远程主机查看端口开放情况

    https://blog.51cto.com/mapengfei/1926039?cid=695986

    python实现指定ip端口扫描

    https://blog.csdn.net/qq_38228830/article/details/81432715

  • 相关阅读:
    VisualStudio 2012中的单元测试
    基于.Net 写我自己的Ajax后台框架AjaxFramework
    MongoDB的真正性能实战百万用户
    基于MMSeg算法的中文分词类库
    Visual Studio 2012的新插件Code Digger (类似Pex)
    Visual Studio 2010 单元测试之一普通单元测试
    Django系列教程:一、Django的安装和入门
    Cocos2dx 入门调研总结
    教程:建立自己的私有云
    如何让你的作业在Hadoop集群中真正实现分布式运行
  • 原文地址:https://www.cnblogs.com/wmiot/p/11565394.html
Copyright © 2011-2022 走看看