python3實現(xiàn)高效的端口掃描
我們通過python-nmap實現(xiàn)一個高效的端口掃描工具,與定時作業(yè)crontab及郵件告警結(jié)合,可以很好的幫助我們及時發(fā)現(xiàn)異常開放的高危端口。當(dāng)然,該工具也可以作為業(yè)務(wù)服務(wù)端口的可用性探測,例如掃描192.168.209.121-125網(wǎng)段Web服務(wù)端口80s是否處于open狀態(tài)。我們這里所采用的scan方法arguments參數(shù)指定為-v -PE -p + 端口, -v表示啟用細節(jié)模式,可以返回非up狀態(tài)主機清單;-PE表示采用TCP同步掃描(TCP SYN)方式; -p指定掃描端口范圍。程序輸出部分采用三個for循環(huán)體,第一層遍歷掃描主機,第二層為遍歷協(xié)議,第三層為遍歷端口,最后輸出主機狀態(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)
#接收用戶輸入的主機
hosts = scan_row[0]
#接收用戶收入的端口
port = scan_row[1]
try:
#創(chuàng)建端口掃描對象
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ù)指定掃描主機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('---------------------------------------------------------------------')
#輸出主機及主機名
print('Host : %s (%s)' % (host, nm[host].hostname()))
#輸出主機狀態(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']))
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用python-pptx創(chuàng)建PPT演示文檔功能實踐
這篇文章主要介紹了使用python-pptx創(chuàng)建PPT演示文檔功能實踐,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
python基于Node2Vec實現(xiàn)節(jié)點分類及其可視化示例詳解
這篇文章主要為大家介紹了python基于Node2Vec實現(xiàn)節(jié)點分類及其可視化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Python限制內(nèi)存和CPU使用量的方法(Unix系統(tǒng)適用)
這篇文章主要介紹了Python限制內(nèi)存和CPU的使用量的方法,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08
詳解Python的Django框架中Manager方法的使用
這篇文章主要介紹了Python的Django框架中Manager方法的使用,包括修改初始Manager QuerySets和增加額外的Manager方法等操作,需要的朋友可以參考下2015-07-07
淺談Python中threading join和setDaemon用法及區(qū)別說明
這篇文章主要介紹了淺談Python中threading join和setDaemon用法及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python中的復(fù)雜數(shù)據(jù)類型(list、tuple)
這篇文章介紹了Python中的復(fù)雜數(shù)據(jù)類型(list、tuple),文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05
使用Python實現(xiàn)下載網(wǎng)易云音樂的高清MV
本文給大家分享的是一則使用Python實現(xiàn)下載網(wǎng)易云音樂中高清MV的代碼,本人新手,沒有做特別的功能,僅僅是直接循環(huán)了MV的id,小伙伴們可以自己擴展下。2015-03-03

