使用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中使用百度音乐搜索的api下载指定歌曲的lrc歌词
Jul 18 Python
Python中Collection的使用小技巧
Aug 18 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
Django项目中使用JWT的实现代码
Nov 04 Python
python实现录屏功能(亲测好用)
Mar 02 Python
python 按钮点击关闭窗口的实现
Mar 04 Python
基于Keras的格式化输出Loss实现方式
Jun 17 Python
python pandas dataframe 去重函数的具体使用
Jul 20 Python
Python绘图之二维图与三维图详解
Aug 04 Python
python 调用API接口 获取和解析 Json数据
Sep 28 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP生成器简单实例
2015/05/13 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
使用Python脚本操作MongoDB的教程
2015/04/16 Python
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
三年级学生期末评语
2014/12/26 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB