使用Python编写简单的端口扫描器的实例分享


Posted in Python onDecember 18, 2015

单线程实现
单线程实现道理比较简单,这里尝试Soket连接3389,连接成功说明端口开放,否则说明没有开远程服务。随便修改了一下就ok了,代码如下,最终得到自己的IP地址。

#!/usr/bin/env python 
import socket 
if __name__=='__main__': 
  port=3389  
  s=socket.socket() 
  for cnt in range(253,2,-1): 
    address='XXX.XXX.XXX.'+str(cnt) #XXX.XXX.XXX IP网段 
    try: 
      s.connect((address,port)) 
      print address 
    except socket.error,e: 
      print 'Error OR Port Not Opened'

Python的代码简单明了,但是功能不简单,速度有些慢,主要还是单线程和网络的原因吧。改进一下可以当一个简陋的端口扫描器使用了,扫描指定网段、指定端口,多线程速度可能能好一点吧。

多线程实现
前几天看了个讲使用Python扫描端口的教程,看了之后自己也写了个扫描端口的脚本。记录下来,方便自己以后回顾。
端口扫描端口效果图

使用Python编写简单的端口扫描器的实例分享

python扫描器源代码

# -*- coding:utf8 -*-
#!/usr/bin/python
# Python:     2.7.8
# Platform:    Windows
# Authro:     wucl
# Program:     端口扫描
# History:     2015.6.1
 
import socket, time, thread
socket.setdefaulttimeout(3)
 
def socket_port(ip,port):
  """
  输入IP和端口号,扫描判断端口是否开放
  """
  try:
    if port>=65535:
      print u'端口扫描结束'
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    result=s.connect_ex((ip,port))
    if result==0:
      lock.acquire()
      print ip,u':',port,u'端口开放'
      lock.release()
    s.close()
  except:
    print u'端口扫描异常'
 
def ip_scan(ip):
  """
  输入IP,扫描IP的0-65534端口情况
  """
  try:
    print u'开始扫描 %s' % ip
    start_time=time.time()
    for i in range(0,65534):
      thread.start_new_thread(socket_port,(ip,int(i)))
    print u'扫描端口完成,总共用时 :%.2f' %(time.time()-start_time)
    raw_input("Press Enter to Exit")
  except:
    print u'扫描ip出错'
     
 
if __name__=='__main__':
  url=raw_input('Input the ip you want to scan:\n')
  lock=thread.allocate_lock()
  ip_scan(url)
Python 相关文章推荐
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
Python构造函数及解构函数介绍
Feb 26 Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
python全栈知识点总结
Jul 01 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
python下载的库包存放路径
Jul 27 Python
Python初学者必备的文件读写指南
Jun 23 Python
python playwright 自动等待和断言详解
Nov 27 Python
十个Python程序员易犯的错误
Dec 15 #Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 #Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 #Python
分享Python字符串关键点
Dec 13 #Python
Python实时获取cmd的输出
Dec 13 #Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 #Python
深入源码解析Python中的对象与类型
Dec 11 #Python
You might like
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
django接入新浪微博OAuth的方法
2015/06/29 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
详解Python绘图Turtle库
2019/10/12 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
荟萃全球保健品:维他购
2018/05/09 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
期末总结的个人自我评价
2013/11/02 职场文书
自我反省检讨书
2014/01/23 职场文书
小学敬老月活动方案
2014/02/11 职场文书
军训感想500字
2014/02/20 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
应聘教师自荐书
2014/06/16 职场文书
创先争优标语
2014/06/27 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书