本文小編為大家詳細(xì)介紹“Python如何編寫nmap掃描工具”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Python如何編寫nmap掃描工具”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
10年積累的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有康樂免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
NMAP是一款開源的網(wǎng)絡(luò)探測(cè)和安全審核的工具,他能夠快速的掃描出某個(gè)服務(wù)器對(duì)外暴露的端口信息。是在安全測(cè)試領(lǐng)域很常見的一個(gè)工具。
今天我們用python的模擬實(shí)現(xiàn)一個(gè)簡單版本的端口掃描工具,主要使用到socket模塊,socket模塊中提供了connect()和connect_ex()兩個(gè)方法,其中connect_ex()方法有返回值,返回值是一個(gè)int類型的數(shù)字,標(biāo)記是否連接成功,0為連接成功,其他數(shù)字表示有異常。
def connect(self, address: Union[_Address, bytes]) -> None: ... def connect_ex(self, address: Union[_Address, bytes]) -> int: ...
def scan_tools_v1(self): host = input("請(qǐng)輸入服務(wù)器ip地址:") port = int(input("請(qǐng)輸入要掃描的端口:")) sk = socket.socket() sk.settimeout(0.1) conn_result = sk.connect_ex((host, port)) if conn_result == 0: print("服務(wù)器{}的{}端口已開放".format(host, port)) else: print("服務(wù)器{}的{}端口未開放".format(host, port)) sk.close()
運(yùn)行結(jié)果:
D:SoftwarePythonPython39python.exe D:/MyScripts/study_srripts/SockerTools/nmap_tools.py
請(qǐng)輸入服務(wù)器ip地址:8.129.162.225
請(qǐng)輸入要掃描的端口:8080
服務(wù)器8.129.162.225的8080端口已開放
缺點(diǎn):
1、一次只能掃描一個(gè)端口
def scan_tools_v2(self): host = input("請(qǐng)輸入服務(wù)器ip地址:") ports = input("請(qǐng)輸入要掃描的端口范圍,格式0-65536:") port_start, port_end = ports.split("-") count = 0 for port in range(int(port_start), int(port_end)+1): sk = socket.socket() sk.settimeout(0.1) conn_result = sk.connect_ex((host, port)) if conn_result == 0: print("服務(wù)器{}的{}端口已開放".format(host, port)) count += 1 sk.close() if count == 0: print(f"服務(wù)器{host}的{ports}端口均未開放")
輸出結(jié)果只輸出已開放的端口信息,如果輸入的端口范圍中,沒有一個(gè)端口開放,那么就直接輸出端口未開放。
總結(jié):
1、以上只是一個(gè)簡易的版本,如果掃描服務(wù)器全量端口的話,耗時(shí)較長,后面可以考慮用多線程的技術(shù)再進(jìn)行優(yōu)化。
2、代碼中針對(duì)異常輸入未進(jìn)行校驗(yàn),可以優(yōu)化
3、要注意ip為字符串類型,端口為int類型,socket對(duì)象初始化要放到循環(huán)里面,并且要設(shè)置超時(shí)時(shí)間,不然默認(rèn)的連接要好長時(shí)間才返回結(jié)果。
讀到這里,這篇“Python如何編寫nmap掃描工具”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文標(biāo)題:Python如何編寫nmap掃描工具
本文地址:http://www.chinadenli.net/article26/joiojg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、商城網(wǎng)站、靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)