Python之——python-nmap的安裝與常用方法說明


一、python-nmap安裝

# yum -y install nmap #安裝nmap工具
# 模塊pip方式安裝
# pip install nmap
# 模塊源碼安裝
# wget http://xael.org/pages/python-nmap-0.6.1.tar.gz
# tar -zxvf python-nmap-0.6.1.tar.gz
# cd python-nmap-0.6.1
# python setup.py install

二、模塊常用方法說明

這里我們主要接受python-nmap模塊的兩個常用類,一個是PortScanner()類,實現一個nmap工具的端口掃描功能封裝;另一個為PortScannerHostDict()類,實現存儲與訪問主機掃描結果

1、PortScanner()類常用方法
1-1、scan()方法

scan(self, hosts='127.0.0.1', ports=None, arguments='-sV')

方法,實現指定主機、端口、namp命令行參數的掃描。參數hosts為字符串類型,表示掃描的主機地址,格式可以用"scanme.nmap.org"、"192.116.0-255.1-127"、"216.163.128.20/20"表示; 參數ports為字符串類型,表示掃描的端口,可以用"22,53,110,143-4564"表示;參數namp命令行參數,格式為"-sU -sX -sC",例如:

nm = nmap.PortScanner()
nm.scan('192.168.209.121-122', '22,80')

1-2、command_line()方法
command_line(self)方法,返回的掃描方法映射到具體的nmap命令行,如:

>>> nm.command_line()
u'nmap -oX - -p 22,80 -sV 192.168.209.121-122'

1-3、scaninfo()方法
scaninfo(self)方法,返回nmap掃描信息,格式為字典類型,如:

>>>nm.scanninfo()
{'tcp':{'services':'22,80', 'method':'syn'}}

1-4、all_hosts()方法
all_hosts(self)方法,返回nmap掃描的主機清單,格式為列表類型,例如:

['192.168.209.121', '192.168.209.122']


2、PortScannerHostDict()類常用方法
2-1、hostname()方法
hostname(self)方法,返回掃描對象的主機名,如:

>>> nm['192.168.209.121'].hostname()

'liuyazhuang'
2-2、state()方法
state(self)方法,返回掃描對象的狀態,包括4中狀態(up、down、unknown、skipped),如:

>>> nm['192.168.209.121'].state()


'up'
2-3、all_protocols()方法
all_protocols(self)方法,返回掃描的協議,如:

>>> nm['192.168.209.121'].all_protocols()

['tcp']
2-4、all_tcp()方法
all_tcp(self)方法,返回TCP協議掃描的端口,如:

>>> nm['192.168.209.121'].all_tcp()


[22,80]
2-5、tcp()方法
tcp(self, port)方法,返回掃描TCP協議port(端口)的信息,如:

>>> nm['192.168.209.121'].tcp(22)
{'state':'open', 'reason':'syn-ack', 'name':'ssh'}

 

python操作nmap

1.簡單的小案例

創建PortScanner實例,然后掃描159.239.210.26這個IP的20-443端口。

import nmap

nm = nmap.PortScanner()
ret = nm.scan('115.239.210.26','20')
print ret

返回格式如下:
{'nmap': {'scanstats': 
{'uphosts': '1', 'timestr': 'Tue Oct 25 11:30:47 2016', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '1.11'},
 'scaninfo': {'tcp': {'services': '20', 'method': 'connect'}}, 'command_line': 'nmap -oX - -p 20 -sV 115.239.210.26'},
 'scan': {'115.239.210.26': {'status': {'state': 'up', 'reason': 'syn-ack'}, 'hostnames': [{'type': '', 'name': ''}],
 'vendor': {}, 'addresses': {'ipv4': '115.239.210.26'},
 'tcp': {20: {'product': '', 'state': 'filtered', 'version': '', 'name': 'ftp-data', 'conf': '3', 'extrainfo': '', 
'reason': 'no-response', 'cpe': ''}
}
}
}
}

2.內置方法:

還可以打印出簡單的信息

import nmap  
nm = nmap.PortScanner() 
print nm.scaninfo()
# {u'tcp': {'services': u'20-443', 'method': u'syn'}}
print nm.command_line() 
# u'nmap -oX - -p 20-443 -sV 115.239.210.26' 

查看有多少個host

print nm.all_hosts()
# [u'115.239.210.26'] 

查看該host的詳細信息

nm['115.239.210.26']

查看該host包含的所有協議

nm['115.239.210.26'].all_protocols() 

查看該host的哪些端口提供了tcp協議

nm['115.239.210.26']['tcp']

nm['115.239.210.26']['tcp'].keys() 

查看該端口是否提供了tcp協議

nm['115.239.210.26'].has_tcp(21)

還可以像這樣設置nmap執行的參數

nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389') 

更多操作請進官網http://xael.org/pages/python-nmap-en.html 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM