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操作mongodb根据_id查询数据的实现方法
May 20 Python
Python利用Nagios增加微信报警通知的功能
Feb 18 Python
django+js+ajax实现刷新页面的方法
May 22 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
django框架实现模板中获取request 的各种信息示例
Jul 01 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
tensorflow求导和梯度计算实例
Jan 23 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
PHP 代码规范小结
2012/03/08 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
Python管理Windows服务小脚本
2018/03/12 Python
python实现扫雷游戏
2020/03/03 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
python numpy实现rolling滚动案例
2020/06/08 Python
10个顶级Python实用库推荐
2021/03/04 Python
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
小学数学教学反思
2014/02/02 职场文书
六个一活动实施方案
2014/03/21 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2014年护士长工作总结
2014/11/11 职场文书
迟到检讨书
2015/01/26 职场文书
教师党员个人总结
2015/02/10 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
python单元测试之pytest的使用
2021/06/07 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js