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之Import 模块
Oct 13 Python
python中的全局变量用法分析
Jun 09 Python
python与php实现分割文件代码
Mar 06 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
Python函数参数操作详解
Aug 03 Python
Python多线程编程之多线程加锁操作示例
Sep 06 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
Python列表(List)知识点总结
Feb 18 Python
python numpy--数组的组合和分割实例
Feb 24 Python
django 模型字段设置默认值代码
Jul 15 Python
Python Selenium实现无可视化界面过程解析
Aug 25 Python
python实现简易自习室座位预约系统
Jun 30 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
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
javascript 类定义的4种方法
2009/09/12 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
Python的历史与优缺点整理
2020/05/26 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
什么是TCP/IP
2014/07/27 面试题
超市营业员求职简历的自我评价
2013/10/17 职场文书
周年庆典邀请函范文
2014/01/23 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
学历公证委托书
2014/04/09 职场文书
双拥工作宣传标语
2014/06/26 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
抢劫罪辩护词
2015/05/21 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
用php如何解决大文件分片上传问题
2021/07/07 PHP
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技
如何基于python实现单目三维重建详解
2022/06/25 Python