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中的JSON模块
Apr 08 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
Python使用sorted排序的方法小结
Jul 28 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
基于Django用户认证系统详解
Feb 21 Python
新手常见6种的python报错及解决方法
Mar 09 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
Jun 24 Python
Python Cookie 读取和保存方法
Dec 28 Python
python 3.6.7实现端口扫描器
Sep 04 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
Sep 23 Python
PyTorch的Debug指南
May 07 Python
python 爬取华为应用市场评论
May 29 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
域名查询代码公布
2006/10/09 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
Web程序工作原理详解
2014/12/25 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
php微信开发之谷歌测距
2018/06/14 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
Python字符转换
2008/09/06 Python
python多进程操作实例
2014/11/21 Python
python实现备份目录的方法
2015/08/03 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
工会文体活动总结
2015/05/07 职场文书
golang slice元素去重操作
2021/04/30 Golang
Python数据类型最全知识总结
2021/05/31 Python
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技