python-nmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pip安装:pip install python-nmap 

手动安装:
下载https://pypi.org/project/python-nmap/
python setup.py install

用法:
import nmap # 导入 nmap.py 模块
nm = nmap.PortScanner() # 实例化nmap.PortScanner对象
nm.scan('127.0.0.1', '22-443') # 扫描127.0.0.1,端口号从22至443
nm.command_line() # 获取当前执行扫描的命令行: nmap -oX - -p 22-443 127.0.0.1
nm.scaninfo() # 获取nmap扫描信息 {'tcp': {'services': '22-443', 'method': 'connect'}}
nm.all_hosts() # 获取所有已经扫描的主机
nm['127.0.0.1'].hostname() # 获取一个主机127.0.0.1的主机名,通常为用户记录
nm['127.0.0.1'].hostnames() # 获取主机127.0.0.1的主机名列表,返回一个字典类型
# [{'name':'hostname1', 'type':'PTR'}, {'name':'hostname2', 'type':'user'}]
nm['127.0.0.1'].state() # 获取主机127.0.0.1的状态 (up|down|unknown|skipped)
nm['127.0.0.1'].all_protocols() # 获取执行的协议 ['tcp', 'udp'] 包含 (ip|tcp|udp|sctp)
nm['127.0.0.1']['tcp'].keys() # 获取tcp协议所有的端口号
nm['127.0.0.1'].all_tcp() # 获取tcp协议所有的端口号 (按照端口号大小进行排序)
nm['127.0.0.1'].all_udp() # 获取udp协议所有的端口号 (按照端口号大小进行排序)
nm['127.0.0.1'].all_sctp() # 获取sctp协议所有的端口号 (按照端口号大小进行排序)
nm['127.0.0.1'].has_tcp(22) # 主机127.0.0.1是否有关于22端口的任何信息
nm['127.0.0.1']['tcp'][22] # 获取主机127.0.0.1关于22端口的信息
nm['127.0.0.1'].tcp(22) # 获取主机127.0.0.1关于22端口的信息
nm['127.0.0.1']['tcp'][22]['state'] # 获取主机22端口的状态 (open)

参考:https://xiaix.me/python-nmapxiang-jie/