python基礎教程之udp連接埠掃描

來源:互聯網
上載者:User
一、概述
任務描述:
開發一個程式,用於擷取區域網路中開啟snmp服務的主機ip地址清單,並寫入相應檔案以便其它程式使用。
背景知識:
SNMP是基於UDP的,而且標準的SNMP服務使用161和162連接埠。
思路:
1、擷取局域線上主機列表;
2、擷取各個主機的snmp連接埠(比如161)開啟狀況;
3、以特定格式寫入特定檔案。
這裡只實現前兩步。

二、nmap實現
1、安裝nmap
Linux平台(CentOS為例):

yum install nmap -y
widows平台(下載地址):
http://nmap.org/download.html#windows

2、擷取線上主機列表
以192.168.1.0/24網段為例:

nmap -sn 192.168.1.0/24
或者指定ip範圍掃描:

nmap -sn 192.168.1.1-254
參數解釋:
-sn: Ping掃描,只進行主機發現,不進行連接埠掃描。

3、擷取主機連接埠開啟狀況
以192.168.1.100為例

nmap -p 161 -sU 192.168.1.100
參數解釋:

-p 161 : 掃描161連接埠
-sU : 進行UDP掃描
nmap返回結果:

open : 開放
closed : 關閉
filtered : 連接埠被防火牆IDS/IPS 屏蔽,無法確定其狀態
unfiltered : 連接埠沒有被屏蔽,但是否開放需要進一步確定
open|filtered : 連接埠是開放的或被屏蔽
closed|filtered : 連接埠是關閉的或被屏蔽
4、nmap捷徑

掃描192.168.1.0/24網段的161連接埠如下:
nmap -p 161 -sU 192.168.1.0/24
三、python實現(藉助python-nmap)
nmap的傳回值有很多資料,需要自行寫程式進行解析,比如對192.168.1.100的161連接埠進行掃描的結果:

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開發的nmap解析庫,原理是調用nmap命令,並對其結果進行解析,返回python能識別的資料結構:
名稱 : python-nmap
url : http://xael.org/norman/python/python-nmap/python-nmap-0.1.4.tar.gz

樣本(掃描區域網路各個主機的snmp服務開啟狀況):

代碼如下:


#! /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))

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.