使用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连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
Python打印斐波拉契数列实例
Jul 07 Python
python删除特定文件的方法
Jul 30 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
简单实现python画圆功能
Jan 25 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
Pandas之Dropna滤除缺失数据的实现方法
Jun 25 Python
对Python获取屏幕截图的4种方法详解
Aug 27 Python
python datetime时间格式的相互转换问题
Jun 11 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 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
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
php中file_exists函数使用详解
2015/05/08 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
原生js封装的ajax方法示例
2018/08/02 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
Python爬取成语接龙类网站
2018/10/19 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
考博自荐信
2013/10/25 职场文书
医院院务公开实施方案
2014/05/03 职场文书
保护野生动物倡议书
2014/05/16 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
个人政治思想总结
2015/03/05 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL