使用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实现巡检系统(solaris)示例
Apr 02 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
python代码编写计算器小程序
Mar 30 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
python实现定时发送邮件
Dec 23 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
openflashchart 2.0 简单案例php版
2012/05/21 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
js打造数组转json函数
2015/01/14 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
解决python flask中config配置管理的问题
2019/07/26 Python
Django--权限Permissions的例子
2019/08/28 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
Python模块常用四种安装方式
2020/10/20 Python
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
拾金不昧表扬信范文
2014/01/11 职场文书
销售口号大全
2014/06/11 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
乔迁新居祝福语
2019/11/04 职场文书
Django程序的优化技巧
2021/04/29 Python
Python实现8种常用抽样方法
2021/06/27 Python
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
对讲机知识
2022/04/07 无线电
python游戏开发Pygame框架
2022/04/22 Python
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技