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 相关文章推荐
centos系统升级python 2.7.3
Jul 03 Python
Python中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
Python中max函数用法实例分析
Jul 17 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
django js实现部分页面刷新的示例代码
May 28 Python
Python做智能家居温湿度报警系统
Sep 25 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
Python 实现数组相减示例
Dec 27 Python
Python基于xlutils修改表格内容过程解析
Jul 28 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 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
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
浅析php学习的路线图
2013/07/10 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
Laravel 队列使用的实现
2019/01/08 PHP
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
python编码总结(编码类型、格式、转码)
2016/07/01 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
单链表反转python实现代码示例
2018/02/08 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
详解Python 解压缩文件
2019/04/09 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
PyQt5实现登录页面
2020/05/30 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
用python写PDF转换器的实现
2020/10/29 Python
Python常用断言函数实例汇总
2020/11/30 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
将相和教学反思
2014/02/04 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
群众路线剖析材料
2014/09/30 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android