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 itertools模块详解
May 09 Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 Python
用Eclipse写python程序
Feb 10 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
Python try except异常捕获机制原理解析
Apr 18 Python
python获取百度热榜链接的实例方法
Aug 25 Python
Python Http请求json解析库用法解析
Nov 28 Python
Pandas数据分析的一些常用小技巧
Feb 07 Python
用Python爬取某乎手机APP数据
Jun 15 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中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
python获取引用对象的个数方式
2019/12/20 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
银行领导证婚词
2014/01/11 职场文书
学校安全生产承诺书
2014/05/23 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
学校教师培训工作总结
2015/10/14 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
Python selenium的这三种等待方式一定要会!
2021/06/10 Python