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 相关文章推荐
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
Python 分享10个PyCharm技巧
Jul 13 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
自学python用什么系统好
Jun 23 Python
Python自省及反射原理实例详解
Jul 06 Python
Python LMDB库的使用示例
Feb 14 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
python3 hdf5文件 遍历代码
May 19 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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
理解PHP5中static和const关键字的区别
2007/03/19 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php单链表实现代码分享
2016/07/04 PHP
js 自制滚动条的小例子
2013/03/16 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
python抓取百度首页的方法
2015/05/19 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
Python程序控制语句用法实例分析
2020/01/14 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
python的链表基础知识点
2020/09/13 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
运动会邀请函范文
2014/02/06 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
保管员岗位职责
2015/02/14 职场文书
2014年个人总结范文
2015/03/09 职场文书
中国合伙人观后感
2015/06/02 职场文书
孟佩杰观后感
2015/06/17 职场文书