使用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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
python实现的重启关机程序实例
Aug 21 Python
Python操作列表之List.insert()方法的使用
May 20 Python
python简单分割文件的方法
Jul 30 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
Django框架验证码用法实例分析
May 10 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
Tensorflow 实现释放内存
Feb 03 Python
Django自关联实现多级联动查询实例
May 19 Python
Python中使用ipython的详细教程
Jun 22 Python
分享3个非常实用的 Python 模块
Mar 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
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
用缓存实现静态页面的测试
2006/12/06 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
js的event详解。
2006/09/06 Javascript
ext form 表单提交数据的方法小结
2008/08/08 Javascript
JavaScript 事件查询综合
2009/07/13 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js日期联动示例
2014/05/02 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
人事专员工作职责
2014/02/22 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
村容村貌整治方案
2014/05/21 职场文书
质量负责人岗位职责
2015/02/15 职场文书
初二英语教学反思
2016/02/15 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
Redis基本数据类型Set常用操作命令
2022/06/01 Redis