Python中python-nmap模組的使用
阿新 • • 發佈:2018-11-07
目錄
環境: python 2.7.13
Windows和Linux預設都是不安裝python-nmap的,我們得手動安裝
python-nmap的安裝
linux:
-
wge t 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
Windows: pip install python-nmap
python-nmap模組的使用
portScanner()類
portScanner()類用於實現對指定主機進行埠掃描
nmScan=nmap.PortScanner() #例項化
scan( host , port , args ) 方法:以指定方式掃描指定主機或網段的指定埠
引數:
- host : 要掃描的主機或網段
- port : 要掃描的埠,多個埠用逗號隔開
- args :要掃描的方式
import nmap
nm = nmap.PortScanner()
nm.scan('192.168.10.10-100', '22,21','-sV')
也可以這樣
nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389')
command_line() 方法:返回的掃描方法對映到具體的nmap命令列,也就是我們上面執行的nm.scan()命令,對應的具體的nmap的命令
import nmap nm = nmap.PortScanner() nm.scan('192.168.10.10-100', '22,21','-sV') a=nm.command_line() print(a) ########################### nmap -oX - -p 20,21 -sV 192.168.125.134
scaninfo() 方法:返回nmap掃描資訊,格式為字典型別
import nmap
nm = nmap.PortScanner()
nm.scan('192.168.10.10-100', '22,21','-sV')
a=nm.scaninfo()
print(a)
###########################
{'tcp': {'services': '20-21', 'method': 'syn'}}
all_hosts() 方法:返回nmap掃描的主機清單,格式為列表型別
import nmap
nm = nmap.PortScanner()
nm.scan('192.168.10.10-12', '22,21','-sV')
####################################################
['192.168.10.10','192.168.10.11','192.168.10.12']
檢視掃描主機的詳細資訊: nm['192.168.125.134']
import nmap
nm=nmap.PortScanner()
nm.scan('192.168.125.134','445')
a=nm['192.168.125.134'] #返回主機的詳細資訊
print(a)
##################################
{'status': {'state': 'up', 'reason': 'arp-response'},
'hostnames': [{'type': 'PTR', 'name': 'bogon'}],
'vendor': {'00:0C:29:F6:2B:F0': 'VMware'},
'addresses': {'mac': '00:0C:29:F6:2B:F0', 'ipv4': '192.168.125.134'},
'tcp': {445: {'product': 'Microsoft Windows 7 - 10 microsoft-ds', 'state': 'open', 'version': '', 'name': 'microsoft-ds', 'conf': '10', 'extrainfo': 'workgroup: WORKGROUP', 'reason': 'syn-ack', 'cpe': 'cpe:/o:microsoft:windows'}}}
檢視主機掃描的埠包含的協議(TCP/UDP):nmap['192.168.125.134'].all_protocols() 返回列表型資料
import nmap
nm=nmap.PortScanner()
nm.scan('192.168.125.134','445')
a=nm['192.168.125.134'].all_protocols() #返回主機掃描的埠包含的協議
print(a)
##################################
['tcp']
檢視掃描的埠哪些埠提供了TCP協議:nmap['192.168.125.134']['tcp']
import nmap
nm=nmap.PortScanner()
nm.scan('192.168.125.134','445')
a=nm['192.168.125.134']['tcp'] #返回主機掃描的埠哪些埠包含了TCP協議,返回具體資訊
b=nm['192.168.125.134']['tcp'].keys() #只返還埠,返回列表型資料
print(a)
print(b)
##################################
{445: {'product': 'Microsoft Windows 7 - 10 microsoft-ds', 'state': 'open', 'version': '', 'name': 'microsoft-ds', 'conf': '10', 'extrainfo': 'workgroup: WORKGROUP', 'reason': 'syn-ack', 'cpe': 'cpe:/o:microsoft:windows'}}
[445]
檢視該埠是否提供了TCP協議:nmap['192.168.125.134'].has_tcp(445) ,返回布林型別的資料
import nmap
nm=nmap.PortScanner()
nm.scan('192.168.125.134','445')
a=nm['192.168.125.134'].has_tcp(445) #判斷該埠是否提供TCP協議
print(a)
##################################
True
檢視該協議下埠的狀態:nmap['192.168.125.134']['tcp'][445][state]
import nmap
nm=nmap.PortScanner()
nm.scan('192.168.125.134','445')
a=nm['192.168.125.134']['tcp'][445]['state']
print(a)
##################################
open