python 实现端口扫描工具

 更新时间:2020年12月18日 09:51:53   作者:lucky_qi  
这篇文章主要介绍了python 实现端口扫描工具的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
# 简单的端口扫描工具
# 作者: Charles
# 公众号: Charles的皮卡丘
import time
import socket
import threading

# 判断是否为正确的IP地址。
def isIP(ip):
  ip_addr = ip.split('.')
  if len(ip_addr) != 4:
   return False
  for ipnum in ip_addr:
   if not (0 <= int(ipnum) < 255):
     return False
  else:
   return True


# 端口扫描工具
class scanThread(threading.Thread):
  def __init__(self, ip, port_min=0, port_max=65535):
   # 初始化。
   threading.Thread.__init__(self)
   self.port_max = port_max
   self.port_min = port_min
   self.ip = ip
   # assert isinstance(int,self.port_min) and isinstance(int,self.port_max)
  # 重写run
  def run(self):
   return self.__checker()
  # 检测
  def __checker(self):
   
   for port in range(self.port_min,self.port_max):
     self.__connect(port)
  # 连接
  def __connect(self,port):
   socket.setdefaulttimeout(1)
   self.sock = socket.socket()
   try:
     start_time = time.time()
     self.sock.connect((self.ip,port))
     end_time = time.time()
     connect_time = int(start_time - end_time)
     info = 'Find --> [IP]: %s, [PORT]: %s, [Connect Time]: %d' % (self.ip, port, connect_time)
     print(info)
     self.__save(info)
     self.sock.close()
   except:
     # print('出错误了')
     self.sock.close()
  def __save(self,info):
   try:
     with open('results.txt', 'a') as f:
      f.write(info + '\n')
   except:
     print('写文件出现了问题')
     time.sleep(0.1)

if __name__ == '__main__':
  # 输入IP地址。
  ip = input('Input IP(example <xxx.xxx.xxx.xxx>):\n')
  print(isIP(ip))
  while not isIP(ip):
   ip = input('请输入正确的IP地址:\n')
  # 输入最小端口、
  port_min = input('需要扫描的最小端口为:')
  while not (0 <= int(port_min) < 65535):
   port_min = input('请输入正确的需要扫描的最小端口:')
  port_max = input('需要扫描的最大端口为(65535):')
  while not (0 <= int(port_min) < int(port_max) < 65535):
   port_min = input('请输入正确的需要扫描的最大端口(65535):')
  num = 8
  port_max = int(port_max)
  port_min = int(port_min)
  interval = (port_max - port_min) // num
  for i in range(interval):
   scanThread(ip, i * num, (i + 1) * num).start()

以上就是python 实现端口扫描工具的详细内容,更多关于python 端口扫描工具的资料请关注脚本之家其它相关文章!

相关文章

  • Python比较配置文件的方法实例详解

    Python比较配置文件的方法实例详解

    工作中最常见的配置文件有四种:普通key=value的配置文件、Json格式的配置文件、HTML格式的配置文件以及YMAML配置文件。这篇文章主要介绍了Python比较配置文件的方法 ,需要的朋友可以参考下
    2019-06-06
  • 解决Pytorch训练过程中loss不下降的问题

    解决Pytorch训练过程中loss不下降的问题

    今天小编就为大家分享一篇解决Pytorch训练过程中loss不下降的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python如何删除字符串最后一个字符

    python如何删除字符串最后一个字符

    这篇文章主要介绍了python如何删除字符串最后一个字符,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Pyqt+matplotlib 实现实时画图案例

    Pyqt+matplotlib 实现实时画图案例

    这篇文章主要介绍了Pyqt+matplotlib 实现实时画图案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python学习笔记嵌套循环详解

    Python学习笔记嵌套循环详解

    这篇文章主要介绍了Python学习笔记嵌套循环详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • Python实现TOPSIS分析法的示例代码

    Python实现TOPSIS分析法的示例代码

    TOPSIS法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确反应各评价方案之间的差距。本文将利用Python实现这一方法,感兴趣的可以了解一下
    2023-02-02
  • 如何在python中实现随机选择

    如何在python中实现随机选择

    这篇文章主要介绍了如何在python中实现随机选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 使用memory_profiler监测python代码运行时内存消耗方法

    使用memory_profiler监测python代码运行时内存消耗方法

    今天小编就为大家分享一篇使用memory_profiler监测python代码运行时内存消耗方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 使用matplotlib画散点图的方法

    使用matplotlib画散点图的方法

    今天小编就为大家分享一篇使用matplotlib画散点图的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python使用turtle库绘制树

    python使用turtle库绘制树

    这篇文章主要为大家详细介绍了python使用turtle库绘制树,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06

最新评论