python扫描器_7.python实现高效端口扫描器之nmap模块
对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块。
本片文章主要介绍nmap模块的两个常用类:
PortScanner()类,实现一个nmap工具的端口扫描功能的封装;
PortScannerHostDict()类,实现存储与访问主机的扫描结果。
安装:这里需要安装的是python-nmap模块,不是nmap模块,pip install python-nmap。
PortScanner()类的一些常用方法:
1. scan()方法:
scan(self,host='127.0.0.1',ports=None,arguments='-sV')
实现指定主机,端口,nmap命令行参数的扫描。
参数说明:
hosts:字符串类型,表示扫描的主机的地址,格式可以用"scanme.nmap.org","127.0.0.1/24"表示;
ports:字符串类型,表示要扫描的端口,可以用"22,80,443-1000"表示;
arguments:字符串类型,表示nmap命令行参数,格式为"-sU -sX -sC"表示。
import nmap
#实例化
nm= nmap.PortScanner()
#端口扫描
nm.scan('www.baidu.com','22,80,443','-sV')
2. command_line(self)方法
返回的扫描方法映射到具体的nmap命令行
nm.command_line()
3. scaninfo(self)方法
返回nmap扫描信息,格式为字典类型
nm.scaninfo()
4. all_hosts(self)方法
返回nmap扫描的主机清单,格式为列表类型
nm.all_hosts()
------------------------------------------------------
PortScannerHostDict()类的一些常用方法
1. hostname(self)方法
返回扫描对象的主机名
nm['61.135.169.125'].hostname()
2. state(self)方法
返回扫描对象的状态,包括四种状态(up,down,unknown,skipped)
nm['61.135.169.125'].state()
3. all_protocols(self)方法
返回扫描的协议
nm['61.135.169.125'].all_protocols()
4.all_tcp(self)方法
返回TCP协议扫描的端口
nm['61.135.169.125'].all_tcp()
5.tcp(self,port)方法
返回扫描TCP协议port的信息
nm['61.135.169.125'].tcp(443)
实践:实现高效的端口扫描
实践代码采用scan()方法的arguments参数指定为 "-v -PE -p + 端口",-v表示启用细节模式,可以返回非up状态主机清单;-PE 表示采用TCP同步扫描(TCP,SYN)方式;-p指定扫描端口范围。程序输出部分采用了三个for循环体,第一层遍历扫描主机,第二层遍历协议,第三层遍历端口,最后输出主机状态。
import sys
import nmap
scan_row=[]
input_data = input('Please input hosts and port: ')
scan_row = input_data.split(" ")
if len(scan_row)!=2:
print("Input errors,example \"192.168.1.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:
print("Unexpected error:", sys.exc_info()[0])
sys.exit(0)
try:
#调用扫描方法,参数指定扫描主机hosts,nmap扫描命令行参数arguments
nm.scan(hosts=hosts, arguments=' -v -sS -p '+port)
except Exception as e:
print("Scan erro:"+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())
for proto in nm[host].all_protocols():
#遍历扫描协议,如tcp、udp
print('----------')
#输入协议名
print('Protocol : %s' % proto)
#获取协议的所有扫描端口
lport = nm[host][proto].keys()
#端口列表排序
list(lport).sort()
#遍历端口及输出端口与状态
for port in lport:
print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
python扫描器_7.python实现高效端口扫描器之nmap模块相关推荐
- 7.python实现高效端口扫描器之nmap模块
对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块. 本片文章主要介绍nmap模块的两个常用类: PortScanner()类,实现一个nma ...
- python扫题软件_python 实现端口扫描工具
# 简单的端口扫描工具 # 作者: Charles # 公众号: Charles的皮卡丘 import time import socket import threading # 判断是否为正确的IP ...
- 网络安全自学篇之Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
前言: Web渗透技术的核心是发现Web漏洞,发现漏洞有手工和软件自动化扫描两种方式.对于用户验证漏洞.用户凭证管理问题.权限特权及访问控制漏洞.缓存漏洞.跨站脚本漏洞.加密漏洞.路径切换漏洞.代码注 ...
- [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster原理详解
Web渗透技术的核心是发现Web漏洞,发现漏洞有手工和软件自动化扫描两种方式.对于用户验证漏洞.用户凭证管理问题.权限特权及访问控制漏洞.缓存漏洞.跨站脚本漏洞.加密漏洞.路径切换漏洞.代码注入漏洞. ...
- 端口扫描神器 - Nmap的基本使用
搜索公众号:白帽子左一,领配套练手靶场,全套安全课程及工具 一.Nmap简介 Nmap是一款网络扫描和主机检测的非常有用的工具. 可以用于收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器. ...
- 端口扫描程序nmap使用详解
1 概述 Nmap是一款网络扫描和主机检测的非常有用的工具,适用于winodws,linux,等操作系统,支持很多扫描技术,例如:UDP.TCP connect().TCP SYN(半开扫描).ftp ...
- 端口扫描工具 NMAP使用详解,收藏这一篇就够了
前言 为了保护计算机不受攻击和各种病毒.木马的侵扰,其实我们可以在网络设备上采取措施,对某些数据包进行阻挡.过滤等,但重要的还是用户需要有一定的意识,采取措施对自己的计算机进行保护安全: 那么,今天主 ...
- linux系统端口扫描工具,[命令] Linux 端口扫描工具 nmap 的使用(转载)
注意:在使用 nmap 命令之前要先安装 nmap 软件包 Nmap 简介 Nmap ("Network Mapper(网络映射器)") 是一款开放源代码的 网络探测和安全审核的工 ...
- 端口扫描工具-Nmap
Nmap是一款功能强大,功能丰富的网络扫描工具,对于网络管理员和安全专业人员来说,是一个非常有用的工具,并且被广泛应用于安全审计.网络调查.漏洞搜寻等领域. (能扫描主机的端口,查看端口是否开放,端口 ...
最新文章
- 接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例...
- 古剑奇谭二服务器维护,《古剑奇谭二》10月4日例行维护更新公告
- AlertDialog.Builder 显示为白色 蓝色字
- ML之LiR2PolyR4PolyR:使用线性回归LiR、二次多项式回归2PolyR、四次多项式回归4PolyR模型在披萨数据集上拟合(train)、价格回归预测(test)
- linux安装java_linux中替换系统自带的OpenJDK
- CDH 版本Hadoop Yarn配置容量调度器(默认是公平调度器)
- boost::mp11::mp_quote相关用法的测试程序
- query什么意思php,关于 QueryPHP
- matlab示波器有功功率,巧用示波器计算功率-测试测量-与非网
- Conditional Jump Instructions
- openCVPracticalExercise学习笔记02
- loadrunner具体实例教你如何进行结果分析
- 深圳dotnet俱乐部2006年1月7日WebPart交流活动
- 如何修改电脑微信的提示音(亲测有效)
- 基于单片机的十字路口交通灯设计(带左转带紧急按钮带调时间)
- oracle 查看cdb,Oracle基础操作——CDB-PDB
- 利用API爬取QQ音乐评论
- win7 正式版安装成功,贴图得瑟一下
- 商店卖西瓜 10斤c语言,算法,西瓜切十刀,最多是多少块?
- parse_depend_manifests Could not find dependent assembly LMicrosoft.Windows.Common-Controls