python3实现高效的端口扫描


Posted in Python onAugust 31, 2019

我们通过python-nmap实现一个高效的端口扫描工具,与定时作业crontab及邮件告警结合,可以很好的帮助我们及时发现异常开放的高危端口。当然,该工具也可以作为业务服务端口的可用性探测,例如扫描192.168.209.121-125网段Web服务端口80s是否处于open状态。我们这里所采用的scan方法arguments参数指定为-v -PE -p + 端口, -v表示启用细节模式,可以返回非up状态主机清单;-PE表示采用TCP同步扫描(TCP SYN)方式; -p指定扫描端口范围。程序输出部分采用三个for循环体,第一层遍历扫描主机,第二层为遍历协议,第三层为遍历端口,最后输出主机状态。

具体脚本port_scanner.py代码如下:

import sys
import nmap

scan_row = []
input_data = input('Please input hosts and port: ')
#scan_row以空格分隔
scan_row = input_data.split(' ')

if len(scan_row) != 2:
 print("Input errors, example \"192.168.209.0/24 80,443,22 \"")
 sys.exit(0)

#接收用户输入的主机
hosts = scan_row[0]
#接收用户收入的端口
port = scan_row[1]

try:
 #创建端口扫描对象
 nm = nmap.PortScanner()
except nmap.PortScannerError:
 print('Nmap not found', sys.exc_info()[0])
 sys.exit(0)
except Exception as e:
 print("Unexpected error:", sys.exc_info()[0])
 print(str(e))
 sys.exit(0)

try:
 #调用扫描方法,参数指定扫描主机hosts,nmap扫描命令行参数arguments
 nm.scan(hosts=hosts, arguments=' -v -sS -p ' + port)
except Exception as e:
 print("Scan error:" + str(e))

for host in nm.all_hosts():
 print('---------------------------------------------------------------------')
 #输出主机及主机名
 print('Host : %s (%s)' % (host, nm[host].hostname()))
 #输出主机状态,如up、down
 print('State : %s' % nm[host].state())
 #遍历扫描协议,tcp、udp
 for proto in nm[host].all_protocols():
  print('--------------')
  #输出协议名
  print('Protocol : %s' % proto)

  #获取协议的所有扫描端口
  lport = list(nm[host][proto].keys())
  #端口列表排序
  lport.sort()
  #遍历端口输出端口与状态
  for port in lport:
   print('port %s\tstate : %s' % (port, nm[host][proto][port]['state']))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python发送HTTP请求的方法小结
Jul 08 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
python实现自动登录后台管理系统
Oct 18 Python
详解python Todo清单实战
Nov 01 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
Python改变对象的字符串显示的方法
Aug 01 Python
Python configparser模块应用过程解析
Aug 14 Python
python nmap实现端口扫描器教程
May 28 #Python
Python3多线程版TCP端口扫描器
Aug 31 #Python
简单了解python协程的相关知识
Aug 31 #Python
利用rest framework搭建Django API过程解析
Aug 31 #Python
Python进度条的制作代码实例
Aug 31 #Python
python类的实例化问题解决
Aug 31 #Python
python检测服务器端口代码实例
Aug 31 #Python
You might like
windows xp下安装pear
2006/12/02 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
Opacity.js
2007/01/22 Javascript
javascript 定义初始化数组函数
2009/09/07 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
全面分析Python的优点和缺点
2018/02/07 Python
python导入坐标点的具体操作
2019/05/10 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
python 获取计算机的网卡信息
2021/02/18 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
资料员的岗位职责
2013/11/20 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
励志演讲稿300字
2014/08/21 职场文书
2014年护理部工作总结
2014/11/14 职场文书
自荐信模板大全
2015/03/27 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL