python实现的多线程端口扫描功能示例


Posted in Python onJanuary 21, 2017

本文实例讲述了python实现的多线程端口扫描功能。分享给大家供大家参考,具体如下:

下面的程序给出了对给定的ip主机进行多线程扫描的Python代码

#!/usr/bin/env python
#encoding: utf-8
import socket, sys, thread, time
openPortNum = 0
socket.setdefaulttimeout(3)
def usage():
  print '''''Usage:
  Scan the port of one IP: python port_scan_multithread.py -o <ip>
  Scan the port of one IP: python port_scan_multithread.py -m <ip1, ip2, ip3, ip4 ...>
  '''
  print 'Exit'
  sys.exit(1)
def socket_port(ip, PORT):
  global openPortNum
  if PORT > 65535:
    print 'Port scanning beyond the port range, interrupt to scan'
    sys.exit(1)
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  result = s.connect_ex((ip, PORT))
  if(result == 0):
    print ip, PORT,'is open'
    openPortNum += 1
  s.close()
def start_scan(IP):
  for port in range(0, 65535+1):
    thread.start_new_thread(socket_port, (IP, int(port)))
    time.sleep(0.006)
if __name__ == '__main__':
  t = 0
  if len(sys.argv)<2 or sys.argv[1] == '-h':
    usage()
  elif sys.argv[1] == '-o':
    ONE_IP = raw_input('Please input ip of scanning: ')
    t = time.time()
    start_scan(ONE_IP)
  elif sys.argv[1] == '-m':
    MANY_IP = raw_input('Please input many ip of scanning: ')
    IP_SEG = MANY_IP.split(',')
    t = time.time()
    for i in IP_SEG:
      start_scan(i)
  print
  print 'total open port is %s, scan used time is: %f ' % (openPortNum, time.time()-t)

运行效果图

python实现的多线程端口扫描功能示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python多线程编程(五):死锁的形成
Apr 05 Python
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
在python中用url_for构造URL的方法
Jul 25 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
python基础学习之生成器与文件系统知识总结
May 25 Python
Python 字符串大小写转换的简单实例
Jan 21 #Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 #Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 #Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 #Python
python 查找字符串是否存在实例详解
Jan 20 #Python
python django 访问静态文件出现404或500错误
Jan 20 #Python
python中实现迭代器(iterator)的方法示例
Jan 19 #Python
You might like
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
php限制ip地址范围的方法
2015/03/31 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
异步加载script的代码
2011/01/12 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
python获取代码运行时间的实例代码
2018/06/11 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
网上签名寄语活动留言
2014/01/18 职场文书
主管会计岗位职责
2014/03/13 职场文书
签约仪式致辞
2015/07/30 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js