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中使用判断语句和循环的教程
Apr 25 Python
Python切换pip安装源的方法详解
Nov 18 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
django Admin文档生成器使用详解
Jul 22 Python
Numpy之将矩阵拉成向量的实例
Nov 30 Python
pytorch 常用线性函数详解
Jan 15 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
python的launcher用法知识点总结
Aug 07 Python
Python经典五人分鱼实例讲解
Jan 04 Python
Python实现学生管理系统(面向对象版)
Jun 24 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
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
浅析php header 跳转
2013/06/17 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
获取python的list中含有重复值的index方法
2018/06/27 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
python 两种方法删除空文件夹
2020/09/29 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
机电专业毕业生推荐信
2013/11/10 职场文书
更夫岗位责任制
2014/02/11 职场文书
《满井游记》教学反思
2014/02/26 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
小学生读书活动总结
2014/06/30 职场文书
小学语文教研活动总结
2014/07/01 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
Go语言入门exec的基本使用
2022/05/20 Golang