1.环境:Centos7+python3.6
2.nmap介绍:python nmap是一个python库,它有助于使用nmap端口扫描器。它可以方便地操作nmap扫描结果,将是一个完美的用于希望自动扫描任务的系统管理员的工具和报告。
3.安装
#安装nmap工具
yum -y install nmap
#pip安装nmap模块
pip3 install python-nmap
4.假如pip安装不可用,编译安装python-nmap模块
#到官网下载对应版本安装包
wget http://xael.org/norman/python/python-nmap/python-nmap-0.4.1.tar.gz
#解压缩
tar -zxvf python-nmap-0.4.1.tar.gz
#安装
cd python-nmap-0.4.1
python setup.py install
5.端口扫描代码示例
#!/usr/bin/python3
#-*-coding:UTF-8-*-
import nmap
import sys
#hosts = input('请输入IP或者域名地址:')
#port = input('请输入端口号或端口范围:')
scan_row=[]
input_data=input('请输入主机地址和端口:')
scan_row=input_data.split(' ')
if len(scan_row)!=2:
print('输入格式错误!主机地址与端口之间以空格为间隔,端口与端口以逗号间隔')
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])
except:
print('Unexpected error:',sys.exc_info()[0])
sys.exit(0)
try:
#调用扫描方法,参数指定扫描主机hosts和port,扫描命令行参数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('主机:%s (%s)'%(host, nm[host].hostname())) #输出主机及主机名
print('状态:%s'%(nm[host].state())) #输出主机状态
for proto in nm[host].all_protocols(): #遍历扫描协议,如tcp,udp
print('--------------------------------')
print('协议:%s'%(proto))
lport = nm[host][proto].keys() #获取协议的所有扫描端口
#lport.sort() #端口列表排序
for port in lport: #遍历端口及输出端口与状态
print('端口:%s 状态:%s:'%(port,nm[host][proto][port]['state']))
print(nm[host].tcp(port))