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的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
Python装饰器基础详解
Mar 09 Python
Python对数据库操作
Mar 28 Python
Python中functools模块的常用函数解析
Jun 30 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
Jul 26 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
Django重设Admin密码过程解析
Feb 10 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 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
Smarty安装配置方法
2008/04/10 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
php at(@)符号的用法简介
2009/07/11 PHP
超级实用的7个PHP代码片段分享
2012/01/05 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
Python实现新浪博客备份的方法
2016/04/27 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
python图书管理系统
2020/04/05 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
python开发入门——列表生成式
2020/09/03 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
读书心得体会
2013/12/28 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
六查六看个人剖析材料
2014/10/14 职场文书