利用Python腳本寫(xiě)端口掃描器socket,python-nmap
前言:
一個(gè)用python寫(xiě)的簡(jiǎn)單的端口掃描器,python環(huán)境為 3.7.0,windows系統(tǒng)
Socket模塊編寫(xiě)
掃描給定主機(jī)是否開(kāi)放了指定的端口
TCP連接掃描是利用TCP的三次握手來(lái)確定主機(jī)的端口是否開(kāi)放。確定主機(jī)端口開(kāi)放之后,給端口發(fā)送消息,接收端口返回的消息,然后判斷該端口運(yùn)行的服務(wù)。
使用時(shí),-H 參數(shù)可以提供主機(jī)的域名或者ip地址,-p/-P 寫(xiě)要掃描的端口,多個(gè)端口用逗號(hào)分隔
# -*- coding: utf-8 -*- import optparse from socket import * import threading threadLock=threading.Lock() #實(shí)例化threadLock對(duì)象 def connScan(Host,Port): try: conn=socket(AF_INET,SOCK_STREAM) conn.connect((Host,Port)) conn.send('test message'.encode("utf-8")) #發(fā)送測(cè)試信息給端口 results=conn.recv(100) #接收主機(jī)返回的信息 threadLock.acquire() #加鎖 print('[+]%d/tcp open'% Port) print('[+] '+results.decode("utf-8")) conn.close() except Exception as e: threadLock.acquire() print(e) print('[-]%d/tcp closed'% Port) finally: threadLock.release() #釋放鎖 conn.close() def portScan(Host,Ports): try: IP=gethostbyname(Host) ##獲得對(duì)應(yīng)主機(jī)的ip地址 except: print("[-] Cannot resolve '%s':Unknown host" %Host) return try: Name=gethostbyaddr(Host) ##獲得ip對(duì)應(yīng)主機(jī)的信息 print ("\n[+] Scan Results for:"+Name[0]) except: print ("\n[+] Scan Results for:"+IP) setdefaulttimeout(1) for Port in Ports: print ("Scanning port "+Port) connScan(Host,int(Port)) def main(): usage="usage %prog -H <target host> -p/-P <target ports>" parser=optparse.OptionParser(usage) #創(chuàng)建對(duì)象實(shí)例 parser.add_option('-H',dest='Host',type='string',help='target host') ##需要的命令行參數(shù) parser.add_option('-P','-p',dest='Ports',type='string',help='target ports') (options,args)=parser.parse_args() Host=options.Host Ports=str(options.Ports).split(',') if (Host==None)|(Ports==None): ##如果主機(jī)和端口都是空的話 print(parser.usage) exit(0) portScan(Host,Ports) if __name__=='__main__': main()
python-nmap模塊編寫(xiě)
我們還可以通過(guò)調(diào)用nmap進(jìn)行端口掃描。
掃描給定ip或給定網(wǎng)段內(nèi)指定端口是否開(kāi)放
-H 參數(shù)可以掃描一個(gè)ip地址也可以掃描一個(gè)網(wǎng)段,-p 只能指定一個(gè)端口
# -*- coding: utf-8 -*- import nmap import optparse def Test(Hosts,port): nm=nmap.PortScanner() nm.scan(Hosts,port) port_int=int(port) #將端口從字符串轉(zhuǎn)化為int類(lèi)型的 for t in nm.all_hosts(): if nm[t].has_tcp(port_int): #如果445端口提供了TCP協(xié)議 state=nm[t]['tcp'][port_int]['state'] #判斷該TCP 445 端口的狀態(tài) if state=='open': print ('[+]Found Target Host:'+t) return def main(): usage="usage %prog -H <target host> -p/-P <target port>" parser=optparse.OptionParser(usage) #創(chuàng)建對(duì)象實(shí)例 parser.add_option('-H',dest='Host',type='string',help='target host') ##需要的命令行參數(shù) parser.add_option('-P','-p',dest='Port',type='string',help='target ports') (options,args)=parser.parse_args() Hosts=options.Host Port=options.Port if (Hosts==None)|(Port==None): #如果主機(jī)和端口都是空的話 print(parser.usage) exit(0) #退出 else: Test(Hosts,Port) if __name__=='__main__': main()
到此這篇關(guān)于利用Python腳本寫(xiě)端口掃描器socket,python-nmap的文章就介紹到這了,更多相關(guān)Python socket,python-nmap內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python實(shí)現(xiàn)socket端口重定向示例
- Python的Socket編程過(guò)程中實(shí)現(xiàn)UDP端口復(fù)用的實(shí)例分享
- Python的Asyncore異步Socket模塊及實(shí)現(xiàn)端口轉(zhuǎn)發(fā)的例子
- 基于Python socket的端口掃描程序?qū)嵗a
- python基于socket進(jìn)行端口轉(zhuǎn)發(fā)實(shí)現(xiàn)后門(mén)隱藏的示例
- python使用多線程+socket實(shí)現(xiàn)端口掃描
- python基于socket函數(shù)實(shí)現(xiàn)端口掃描
- Python利用socket模塊開(kāi)發(fā)簡(jiǎn)單的端口掃描工具的實(shí)現(xiàn)
相關(guān)文章
python實(shí)現(xiàn)數(shù)字炸彈游戲程序
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)數(shù)字炸彈游戲程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07利用Python進(jìn)行數(shù)據(jù)可視化的實(shí)例代碼
數(shù)據(jù)可視化和數(shù)據(jù)挖掘都是探索數(shù)據(jù)和分析數(shù)據(jù)的一種手段,下面這篇文章主要給大家介紹了關(guān)于如何利用Python進(jìn)行數(shù)據(jù)可視化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09詳解Python圖像形態(tài)學(xué)處理(開(kāi)運(yùn)算,閉運(yùn)算,梯度運(yùn)算)
數(shù)學(xué)形態(tài)學(xué)(Mathematical Morphology)是一種應(yīng)用于圖像處理和模式識(shí)別領(lǐng)域的新方法。本文將為大家介紹Python圖像形態(tài)學(xué)處理中的開(kāi)運(yùn)算、閉運(yùn)算和梯度運(yùn)算,感興趣的可以了解一下2022-06-06python+selenium+autoit實(shí)現(xiàn)文件上傳功能
這篇文章主要介紹了python+selenium+autoit實(shí)現(xiàn)文件上傳功能,需要的朋友可以參考下2017-08-08python微信聊天機(jī)器人改進(jìn)版(定時(shí)或觸發(fā)抓取天氣預(yù)報(bào)、勵(lì)志語(yǔ)錄等,向好友推送)
這篇文章主要介紹了python微信聊天機(jī)器人改進(jìn)版,定時(shí)或觸發(fā)抓取天氣預(yù)報(bào)、勵(lì)志語(yǔ)錄等,向好友推送 ,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04Python 讀寫(xiě)文件和file對(duì)象的方法(推薦)
下面小編就為大家?guī)?lái)一篇Python 讀寫(xiě)文件和file對(duì)象的方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09tensorflow1.0學(xué)習(xí)之模型的保存與恢復(fù)(Saver)
這篇文章主要介紹了tensorflow1.0學(xué)習(xí)之模型的保存與恢復(fù)(Saver) ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python3調(diào)用百度翻譯API實(shí)現(xiàn)實(shí)時(shí)翻譯
這篇文章主要為大家詳細(xì)介紹了python3調(diào)用百度翻譯API,實(shí)現(xiàn)實(shí)時(shí)翻譯,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Pytorch?Mac?GPU?訓(xùn)練與測(cè)評(píng)實(shí)例
這篇文章主要為大家介紹了Pytorch?Mac?GPU?訓(xùn)練與測(cè)評(píng)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01