您好,登錄后才能下訂單哦!
我們通過python-nmap實現(xiàn)一個高效的端口掃描工具,與定時作業(yè)crontab及郵件告警結(jié)合,可以很好的幫助我們及時發(fā)現(xiàn)異常開放的高危端口。當然,該工具也可以作為業(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í)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。