使用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 字符串中的字符倒转
Sep 06 Python
进一步理解Python中的函数编程
Apr 13 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
python如何通过protobuf实现rpc
Mar 06 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
Python切片索引用法示例
May 15 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
Python读取YAML文件过程详解
Dec 30 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
python 自动刷新网页的两种方法
Apr 20 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php静态文件生成类实例分析
2015/01/03 PHP
div层的移动及性能优化
2010/11/16 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
Express进阶之log4js实用入门指南
2018/02/10 Javascript
python每隔N秒运行指定函数的方法
2015/03/16 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
python获取服务器响应cookie的实例
2018/12/28 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
Java面试题:为什么要用Java
2012/05/11 面试题
编辑找工作求职信分享
2014/01/03 职场文书
运动会广播稿100字
2014/01/11 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
小学家长评语大全
2014/04/16 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
公司演讲稿开场白
2014/08/25 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
律政俏佳人观后感
2015/06/09 职场文书
小王子读书笔记
2015/06/29 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python