python基礎(chǔ)教程之udp端口掃描
一、概述
任務(wù)描述:
開發(fā)一個程序,用于獲取局域網(wǎng)中開啟snmp服務(wù)的主機ip地址列表,并寫入相應(yīng)文件以便其它程序使用。
背景知識:
SNMP是基于UDP的,而且標準的SNMP服務(wù)使用161和162端口。
思路:
1、獲取局域在線主機列表;
2、獲取各個主機的snmp端口(比如161)開啟狀況;
3、以特定格式寫入特定文件。
這里只實現(xiàn)前兩步。
二、nmap實現(xiàn)
1、安裝nmap
Linux平臺(CentOS為例):
yum install nmap -y
widows平臺(下載地址):
http://nmap.org/download.html#windows
2、獲取在線主機列表
以192.168.1.0/24網(wǎng)段為例:
nmap -sn 192.168.1.0/24
或者指定ip范圍掃描:
nmap -sn 192.168.1.1-254
參數(shù)解釋:
-sn: Ping掃描,只進行主機發(fā)現(xiàn),不進行端口掃描。
3、獲取主機端口開啟狀況
以192.168.1.100為例
nmap -p 161 -sU 192.168.1.100
參數(shù)解釋:
-p 161 : 掃描161端口
-sU : 進行UDP掃描
nmap返回結(jié)果:
open : 開放
closed : 關(guān)閉
filtered : 端口被防火墻IDS/IPS 屏蔽,無法確定其狀態(tài)
unfiltered : 端口沒有被屏蔽,但是否開放需要進一步確定
open|filtered : 端口是開放的或被屏蔽
closed|filtered : 端口是關(guān)閉的或被屏蔽
4、nmap捷徑
掃描192.168.1.0/24網(wǎng)段的161端口如下:
nmap -p 161 -sU 192.168.1.0/24
三、python實現(xiàn)(借助python-nmap)
nmap的返回值有很多數(shù)據(jù),需要自行寫程序進行解析,比如對192.168.1.100的161端口進行掃描的結(jié)果:
Nmap scan report for 192.168.1.100
Host is up (0.00024s latency).
PORT STATE SERVICE
161/udp closed snmp
MAC Address: 10:BF:5A:6A:BA:48 (Unknown)
這里有個python開發(fā)的nmap解析庫,原理是調(diào)用nmap命令,并對其結(jié)果進行解析,返回python能識別的數(shù)據(jù)結(jié)構(gòu):
名稱 : python-nmap
url : http://xael.org/norman/python/python-nmap/python-nmap-0.1.4.tar.gz
示例(掃描局域網(wǎng)各個主機的snmp服務(wù)開啟狀況):
#! /usr/bin/python
import nmap
nm = nmap.PortScanner()
nm.scan(hosts='192.168.1.0/24', arguments='-p 161 -sU ')
hosts_list = [(x, nm[x][u'udp'][161]['state']) for x in nm.all_hosts()]
for host, status in hosts_list:
print('{0}:{1}'.format(host, status))
相關(guān)文章
基于spring boot 日志(logback)報錯的解決方式
今天小編就為大家分享一篇基于spring boot 日志(logback)報錯的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
深入解析Python編程中super關(guān)鍵字的用法
Python的子類調(diào)用父類成員時可以用到super關(guān)鍵字,初始化時需要注意super()和__init__()的區(qū)別,下面我們就來深入解析Python編程中super關(guān)鍵字的用法:2016-06-06
用Python自動清理電腦內(nèi)重復(fù)文件,只要10行代碼(自動腳本)
這篇文章主要介紹了用Python自動清理電腦內(nèi)重復(fù)文件,只要10行代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

