使用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中的类与实例
Apr 27 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
Python 查看文件的读写权限方法
Jan 23 Python
用Python读取几十万行文本数据
Dec 24 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
python argparser的具体使用
Nov 10 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 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实现维护文件代码
2007/06/14 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
javascript第一课
2007/02/27 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
python实现交并比IOU教程
2020/04/16 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
毕业生找工作的求职信范文
2013/12/24 职场文书
开办饭店创业计划书
2013/12/28 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
goland设置颜色和字体的操作
2021/05/05 Golang
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
MyBatis 动态SQL全面详解
2021/10/05 MySQL