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


Posted in Python onSeptember 04, 2019

扫描服务器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 相关文章推荐
python处理json数据中的中文
Mar 06 Python
python控制台英汉汉英电子词典
Apr 23 Python
python批量提取word内信息
Aug 09 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
基于Python生成个性二维码过程详解
Mar 05 Python
Python生成器next方法和send方法区别详解
May 30 Python
Python数据分析模块pandas用法详解
Sep 04 #Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 #Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 #Python
Django框架 querySet功能解析
Sep 04 #Python
Django框架 查询Extra功能实现解析
Sep 04 #Python
Django框架 Pagination分页实现代码实例
Sep 04 #Python
python 动态迁移solr数据过程解析
Sep 04 #Python
You might like
smarty获得当前url的方法分享
2014/02/14 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
javascript中怎么做对象的类型判断
2013/11/11 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
es6新特性之 class 基本用法解析
2018/05/05 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
Python中类型关系和继承关系实例详解
2015/05/25 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
django认证系统 Authentication使用详解
2019/07/22 Python
python IP地址转整数
2020/11/20 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
澳大利亚头发和美容产品购物网站:OZ Hair & Beauty
2020/03/27 全球购物
JDO的含义
2012/11/17 面试题
11月升旗仪式讲话稿
2014/02/15 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
大跃进口号
2014/06/16 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
典型事迹材料范文
2014/12/29 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
Spring Boot 实现 WebSocket
2022/04/30 Java/Android