python3實(shí)現(xiàn)高效的端口掃描
我們通過(guò)python-nmap實(shí)現(xiàn)一個(gè)高效的端口掃描工具,與定時(shí)作業(yè)crontab及郵件告警結(jié)合,可以很好的幫助我們及時(shí)發(fā)現(xiàn)異常開(kāi)放的高危端口。當(dāng)然,該工具也可以作為業(yè)務(wù)服務(wù)端口的可用性探測(cè),例如掃描192.168.209.121-125網(wǎng)段Web服務(wù)端口80s是否處于open狀態(tài)。我們這里所采用的scan方法arguments參數(shù)指定為-v -PE -p + 端口, -v表示啟用細(xì)節(jié)模式,可以返回非up狀態(tài)主機(jī)清單;-PE表示采用TCP同步掃描(TCP SYN)方式; -p指定掃描端口范圍。程序輸出部分采用三個(gè)for循環(huán)體,第一層遍歷掃描主機(jī),第二層為遍歷協(xié)議,第三層為遍歷端口,最后輸出主機(jī)狀態(tài)。
具體腳本port_scanner.py代碼如下:
import sys
import nmap
scan_row = []
input_data = input('Please input hosts and port: ')
#scan_row以空格分隔
scan_row = input_data.split(' ')
if len(scan_row) != 2:
print("Input errors, example \"192.168.209.0/24 80,443,22 \"")
sys.exit(0)
#接收用戶輸入的主機(jī)
hosts = scan_row[0]
#接收用戶收入的端口
port = scan_row[1]
try:
#創(chuàng)建端口掃描對(duì)象
nm = nmap.PortScanner()
except nmap.PortScannerError:
print('Nmap not found', sys.exc_info()[0])
sys.exit(0)
except Exception as e:
print("Unexpected error:", sys.exc_info()[0])
print(str(e))
sys.exit(0)
try:
#調(diào)用掃描方法,參數(shù)指定掃描主機(jī)hosts,nmap掃描命令行參數(shù)arguments
nm.scan(hosts=hosts, arguments=' -v -sS -p ' + port)
except Exception as e:
print("Scan error:" + str(e))
for host in nm.all_hosts():
print('---------------------------------------------------------------------')
#輸出主機(jī)及主機(jī)名
print('Host : %s (%s)' % (host, nm[host].hostname()))
#輸出主機(jī)狀態(tài),如up、down
print('State : %s' % nm[host].state())
#遍歷掃描協(xié)議,tcp、udp
for proto in nm[host].all_protocols():
print('--------------')
#輸出協(xié)議名
print('Protocol : %s' % proto)
#獲取協(xié)議的所有掃描端口
lport = list(nm[host][proto].keys())
#端口列表排序
lport.sort()
#遍歷端口輸出端口與狀態(tài)
for port in lport:
print('port %s\tstate : %s' % (port, nm[host][proto][port]['state']))
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python編寫函數(shù)注意事項(xiàng)總結(jié)
在本篇文章里小編給大家分享了一篇關(guān)于python編寫函數(shù)注意事項(xiàng)總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-03-03
使用python-pptx創(chuàng)建PPT演示文檔功能實(shí)踐
這篇文章主要介紹了使用python-pptx創(chuàng)建PPT演示文檔功能實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
python基于Node2Vec實(shí)現(xiàn)節(jié)點(diǎn)分類及其可視化示例詳解
這篇文章主要為大家介紹了python基于Node2Vec實(shí)現(xiàn)節(jié)點(diǎn)分類及其可視化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Python限制內(nèi)存和CPU使用量的方法(Unix系統(tǒng)適用)
這篇文章主要介紹了Python限制內(nèi)存和CPU的使用量的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08
詳解Python的Django框架中Manager方法的使用
這篇文章主要介紹了Python的Django框架中Manager方法的使用,包括修改初始Manager QuerySets和增加額外的Manager方法等操作,需要的朋友可以參考下2015-07-07
淺談Python中threading join和setDaemon用法及區(qū)別說(shuō)明
這篇文章主要介紹了淺談Python中threading join和setDaemon用法及區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python中的復(fù)雜數(shù)據(jù)類型(list、tuple)
這篇文章介紹了Python中的復(fù)雜數(shù)據(jù)類型(list、tuple),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
使用Python實(shí)現(xiàn)下載網(wǎng)易云音樂(lè)的高清MV
本文給大家分享的是一則使用Python實(shí)現(xiàn)下載網(wǎng)易云音樂(lè)中高清MV的代碼,本人新手,沒(méi)有做特別的功能,僅僅是直接循環(huán)了MV的id,小伙伴們可以自己擴(kuò)展下。2015-03-03

