python多线程扫描端口(线程池)

 更新时间:2019年09月04日 14:38:08   作者:guntm124  
这篇文章主要为大家详细介绍了python多线程扫描端口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

扫描服务器ip开放端口,用线程池ThreadPoolExecutor,i7的cpu可以开到600个左右现成,大概20s左右扫描完65535个端口,根据电脑配置适当降低线程数

#!/usr/local/python3.6.3/bin/python3.6
# coding = utf-8

import socket
import datetime
import re
from concurrent.futures import ThreadPoolExecutor, wait

DEBUG = False

# 判断ip地址输入是否符合规范
def check_ip(ipAddr):
  compile_ip = re.compile('^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
  if compile_ip.match(ipAddr):
    return True
  else:
    return False

# 扫描端口程序
def portscan(ip, port):
  try:
    s = socket.socket()
    s.settimeout(0.2)
    s.connect((ip, port))
    openstr = f'[+] {ip} port:{port} open'
    print(openstr)
  except Exception as e:
    if DEBUG is True:
      print(ip + str(port) + str(e))
    else:
      return f'[+] {ip} port:{port} error'
  finally:
    s.close

#主程序,利用ThreadPoolExecutor创建600个线程同时扫描端口
def main():
  while True:
    ip = input("请输入ip地址:")
    if check_ip(ip):
      start_time = datetime.datetime.now()
      executor = ThreadPoolExecutor(max_workers=600)
      t = [executor.submit(portscan, ip, n) for n in range(1, 65536)]
      if wait(t, return_when='ALL_COMPLETED'):
        end_time = datetime.datetime.now()
        print("扫描完成,用时:", (end_time - start_time).seconds)
        break


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python内置函数之filter map reduce介绍

    Python内置函数之filter map reduce介绍

    Python内置了一些非常有趣、有用的函数,如:filter、map、reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车
    2014-11-11
  • Python itertools模块详解

    Python itertools模块详解

    这篇文章主要介绍了Python itertools模块详解,本文基本是基于文档的翻译和补充,相当于翻译了,需要的朋友可以参考下
    2015-05-05
  • pywinauto自动化测试使用经验

    pywinauto自动化测试使用经验

    本文主要介绍了pywinauto自动化测试使用经验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Django 后台带有字典的列表数据与页面js交互实例

    Django 后台带有字典的列表数据与页面js交互实例

    这篇文章主要介绍了Django 后台带有字典的列表数据与页面js交互实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python使用xmlrpc实例讲解

    python使用xmlrpc实例讲解

    这篇文章主要介绍了python中使用xmlrpc的实例,大家参考使用吧
    2013-12-12
  • Python使用Matplotlib绘制3D圣诞树

    Python使用Matplotlib绘制3D圣诞树

    这篇文章主要为大家详细介绍了Python如何使用Matplotlib绘制3D圣诞树,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • python双向循环链表实例详解

    python双向循环链表实例详解

    这篇文章主要为大家详细介绍了python双向循环链表实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Python Django Vue 项目创建过程详解

    Python Django Vue 项目创建过程详解

    这篇文章主要介绍了Python Django Vue 项目创建过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python图像处理之图像的灰度线性变换

    Python图像处理之图像的灰度线性变换

    这篇文章主要介绍了Python图像处理之图像的灰度线性变换,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

    python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

    今天小编就为大家分享一篇python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论