模块功能
目前Nmap模块已具备如下各种功能。
- 主机发现功能。向目标计算机发送信息,然后根据目标的反应来确定它是否处于开机并联网的状态。
- 端口扫描 。向目标计算机的指定端口发送信息,然后根据目标端口的反应来判断它是否开放。
- 服务及版本检测。向目标计算机的指定端口发送特制的信息,然后根据目标的反应来检测它运行服务的服务类型和版本。
- 操作系统检测。
除了这些基本功能之外,Nmap还实现一些高级的审计技术,例如,伪造发起扫描端的身份,进行隐蔽的扫描,规避目标的防御设备(例如防火墙),对系统进行安全漏洞检测,并提供完善的报告选项。再后来的不断发展中,随着Nmap强大的脚本引擎NSE的推出,任何人都可以自己向Nmap中添加新的功能模块。
安装Nmap及其模块
Nmap的安装Windows下去官网下载就可以了,作者遇到的问题也已经专门做了笔记,这是笔记链接
在这里需要强调一下,我们要安装的模块是python-nmap 而不是 nmap ,切记切记!如果装错了模块,后面是无法完成实例化的!
pip install python-nmap #安装模块命令
基本用法
- python-nmap模块实例化
最常用的是PortScanner类,这个类实现Nmap工具功能的封装。对这个类进行实例化很简单,只需要如下语句便可实现。
import nmap
nm=nmap.PortScanner()
PortScannerAsync类和PortScanner类的功能相似,但是这个类可以实现异步扫描,对这个类的实例化语句如下。
import nmap
nm=nmap.PortScannerAsync()
- python-nmap中的函数
首先看一下PortScanner类,这个类中包含了如下几个函数。
scan()函数:这个函数的完整形式为scan(self,hosts=‘127.0.0.1’,ports=None,arguments=’-sV’,sudo=False),用来对指定目标进行扫描。
这里面的参数hosts的值为字符串类型,表示要扫描的主机,形式可以是IP地址,例如"192.168.1.1",也可以是一个域名,例如"www.nmap.org"
参数ports的值也是字符串类型,表示要扫描的端口。如果要扫描的是单一端口,形式可以为"80"。如果为多个端口,可以用逗号分开,例如"80,443,3389"。如果要扫描的是连续的端口范围,可以用横线,例如“1-5000” 。
参数arguments的值也是字符串类型,这个参数实际上就是Nmap扫描所用的参数。
参数 | 作用 |
---|---|
-O | 系统扫描 |
-V,-v,-D,-d,-p | debug信息 |
–fuzzy | 推测操作系统检测结果 |
-sT | TCP端口扫描(完整三次握手) |
-sU | UDP端口扫描(不回应可能打开,回应则关闭) |
-sL | DNS反向解析 |
-sS | 隐藏扫描(半开SYN) |
-sP | 发现存活主机(直连arp,非直连TCP80,ICMP) |