使用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导出数据到Excel可读取的CSV文件的方法
May 12 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
pytorch构建网络模型的4种方法
Apr 13 Python
Sanic框架路由用法实例分析
Jul 16 Python
Python测试Kafka集群(pykafka)实例
Dec 23 Python
python实现从ftp服务器下载文件
Mar 03 Python
python自动下载图片的方法示例
Mar 25 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
python实现层次聚类的方法
Nov 01 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正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
js null,undefined,字符串小结
2010/08/21 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
深入理解javascript中的this
2021/02/08 Javascript
python网络编程之数据传输UDP实例分析
2015/05/20 Python
python设计模式大全
2016/06/27 Python
Python快速排序算法实例分析
2017/11/29 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
华为的Java面试题
2014/03/07 面试题
小学三年级数学教学反思
2014/01/31 职场文书
工作态度检讨书范文
2015/05/06 职场文书
关于环保的宣传稿
2015/07/23 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书