網(wǎng)站首頁 編程語言 正文
環(huán)境:?python 2.7.13
Windows
和Linux
默認(rèn)都是不安裝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模塊的使用
1.portScanner()類
portScanner()
類用于實(shí)現(xiàn)對指定主機(jī)進(jìn)行端口掃描
nmScan=nmap.PortScanner() ?#實(shí)例化
scan( host , port , args ) 方法:以指定方式掃描指定主機(jī)或網(wǎng)段的指定端口
參數(shù):
-
host
: 要掃描的主機(jī)或網(wǎng)段,可以是一個單獨(dú)的ip:192.168.10.10 ;也可以是一個小范圍網(wǎng)段:192.168.10.10-20 ;也可以是一個大網(wǎng)段:192.168.10.0/24 -
port
: ? ?可選參數(shù),要掃描的端口,多個端口用逗號隔開,如:20,21,22,23,24 -
args
:可選參數(shù),要掃描的方式
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
命令行,也就是我們上面執(zhí)行的nm.scan()命令,對應(yīng)的具體的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掃描的主機(jī)清單,格式為列表類型
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']
查看掃描主機(jī)的詳細(xì)信息: nm['192.168.125.134']
import nmap nm=nmap.PortScanner() nm.scan('192.168.125.134','445') a=nm['192.168.125.134'] ? ?#返回主機(jī)的詳細(xì)信息 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'}}}
查看主機(jī)掃描的端口包含的協(xié)議(TCP/UDP):nmap['192.168.125.134'].all_protocols() ?返回列表型數(shù)據(jù)
import nmap nm=nmap.PortScanner() nm.scan('192.168.125.134','445') a=nm['192.168.125.134'].all_protocols() ? ?#返回主機(jī)掃描的端口包含的協(xié)議 print(a) ################################## ['tcp']
查看掃描的端口哪些端口提供了TCP協(xié)議: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'] ? ? ? ?#返回主機(jī)掃描的端口哪些端口包含了TCP協(xié)議,返回具體信息 b=nm['192.168.125.134']['tcp'].keys() ?#只返還端口,返回列表型數(shù)據(jù) 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協(xié)議:nmap['192.168.125.134'].has_tcp(445) ,返回布爾類型的數(shù)據(jù)
import nmap nm=nmap.PortScanner() nm.scan('192.168.125.134','445') a=nm['192.168.125.134'].has_tcp(445) ? ? ? ?#判斷該端口是否提供TCP協(xié)議 print(a) ################################## True
查看該協(xié)議下端口的狀態(tài):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
原文鏈接:https://www.cnblogs.com/csnd/p/11807823.html
相關(guān)推薦
- 2022-12-09 Python網(wǎng)絡(luò)編程之Python編寫TCP協(xié)議程序的步驟_python
- 2023-05-20 Python?seek()和tell()函數(shù)的具體使用_python
- 2022-07-16 Date 轉(zhuǎn)為 LocalDate
- 2023-07-28 獲取當(dāng)前日期以及前6天的日期集合
- 2022-06-13 詳解Python+Matplotlib繪制面積圖&熱力圖_python
- 2022-12-03 SQL?Server如何通過SQL語句直接操作另一臺服務(wù)器上的SQL?SERVER的數(shù)據(jù)_MsSql
- 2022-08-15 apollo配置中心的client端分析
- 2024-03-28 存儲過程整合springboot
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支