使用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 相关文章推荐
Pyhton中防止SQL注入的方法
Feb 05 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
获取python的list中含有重复值的index方法
Jun 27 Python
python生成lmdb格式的文件实例
Nov 08 Python
python hbase读取数据发送kafka的方法
Dec 27 Python
python 实现UTC时间加减的方法
Dec 31 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
Python求凸包及多边形面积教程
Apr 12 Python
Python的logging模块基本用法
Dec 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
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
python接口自动化框架实战
2020/12/23 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
大课间活动制度
2014/01/18 职场文书
高中生期末评语
2014/01/28 职场文书
个人安全承诺书
2014/05/22 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
物业接待员岗位职责
2015/04/15 职场文书
功夫熊猫观后感
2015/06/10 职场文书
就业证明函
2015/06/17 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
导游词之江南周庄
2019/12/06 职场文书
Python Socket编程详解
2021/04/25 Python
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技