使用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模块restful使用方法实例
Dec 10 Python
python打开网页和暂停实例
Sep 30 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
python指定写入文件时的编码格式方法
Jun 07 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
BP神经网络原理及Python实现代码
Dec 18 Python
python学习开发mock接口
Apr 28 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
python中加背景音乐如何操作
Jul 19 Python
Python 中random 库的详细使用
Jun 03 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
基于mysql的论坛(1)
2006/10/09 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
Jquery 插件开发笔记整理
2011/01/17 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python简单猜数游戏实例
2015/07/09 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
大学生蛋糕店创业计划书
2014/01/13 职场文书
学生宿舍管理制度
2014/01/30 职场文书
装饰活动策划方案
2014/02/11 职场文书
个性车贴标语
2014/06/24 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
基层党支部整改方案
2014/10/25 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书
安全第一课观后感
2015/06/18 职场文书
亲戚关系证明
2015/06/24 职场文书
Go语言 详解net的tcp服务
2022/04/14 Golang