python基于socket函數(shù)實(shí)現(xiàn)端口掃描
本文實(shí)例為大家分享了python基于socket實(shí)現(xiàn)端口掃描的具體代碼,供大家參考,具體內(nèi)容如下
自學(xué)Python一段時(shí)間,寫個(gè)端口掃描器練練手。有什么不足之處,請(qǐng)見諒
這是基于socket函數(shù)對(duì)端口進(jìn)行端口掃描
所以,首先要導(dǎo)入socket模塊
from socket import *
其次,通過正側(cè)表達(dá)式來判斷輸入的是不是IP地址
compile_ip = re.compile( '^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
這里是核心代碼
# -*- coding: utf-8 -*- from socket import * import re from pip._vendor.distlib.compat import raw_input def portscaner(host,port): try: s = socket(AF_INET, SOCK_STREAM) # 實(shí)例化socket s.connect((host,port)) #對(duì)對(duì)應(yīng)主機(jī)的對(duì)應(yīng)端口發(fā)起連接 print('主機(jī)%s的%s端口處于打開狀態(tài)'%(host,port)) s.close() #關(guān)閉連接 Export_Data(port) #調(diào)用Export_Date except Exception as e: pass #利用異常處理,對(duì)無法建立連接的端口pass掉 def ChecK_Host(host): #利用正側(cè)表達(dá)式匹配host,判斷是否符合IP地址的格式 并且輸入不為空 compile_ip = re.compile( '^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$') if compile_ip.match(host) and len(host)!=0: #host符合IP地址的格式且不為空值返回True,否則返回False return True else: return False def Export_Data(port): #導(dǎo)出數(shù)據(jù) port = str(port) #將port轉(zhuǎn)換為字符串類型 date = open('Active_Port.txt', 'a') #在文件尾部寫入數(shù)據(jù),Active_Port.txt,若不存在就新建文件 date.write(port+'\n') #將port并行寫入文件 date.close() #不要忘了關(guān)閉文件 def main(host): #主模塊 if ChecK_Host(host): #通過ChecK_Host()函數(shù)return 的布爾值進(jìn)行判斷輸入的IP地址是否有誤 for port in range(1,65536): #這里可以改成1024 portscaner(host, port) print('\n') print('已將結(jié)果導(dǎo)出到 Active_Port.txt') else: print('IP地址無錯(cuò)誤,請(qǐng)重新輸入?。?!') if __name__ == '__main__': print('<' * 12 + '單線程端口掃描器' + '>' * 12) host = input('請(qǐng)輸入有效的目標(biāo)IPv4地址:') main(host) raw_input('Press Enter to exit...') #當(dāng)腳本執(zhí)行完后,等待鍵入Enter回車才退出程序(可有可無,主要是為了封裝成exe可執(zhí)行文件后,執(zhí)行完程序dos界面不自動(dòng)退出)
測(cè)試結(jié)果
可見目的主機(jī)的21端口處于開放狀態(tài)
掃描結(jié)束后,將存活的端口寫入到Active_Port.txt
這里沒有用到多線程,通過循環(huán),一個(gè)一個(gè)端口進(jìn)行連接,掃描速度非常慢。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python實(shí)現(xiàn)socket端口重定向示例
- Python的Socket編程過程中實(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)后門隱藏的示例
- python使用多線程+socket實(shí)現(xiàn)端口掃描
- Python利用socket模塊開發(fā)簡(jiǎn)單的端口掃描工具的實(shí)現(xiàn)
- 利用Python腳本寫端口掃描器socket,python-nmap
相關(guān)文章
Python+OpenCV圖像處理之直方圖統(tǒng)計(jì)
直方圖就是對(duì)圖像的另外一種解釋,它描述了整幅圖像的灰度分布。通過直方圖我們可以對(duì)圖像的亮度、灰度分布、對(duì)比度等有了一個(gè)直觀的認(rèn)識(shí)。本文將為大家詳細(xì)介紹一下如何通過OpenCV實(shí)現(xiàn)直方圖統(tǒng)計(jì),感興趣的可以了解一下2021-12-12176萬!GPT-4發(fā)布詳解如何查看OpenAI的下載量
這篇文章主要為大家介紹了GPT-4發(fā)布如何查看OpenAI的下載量詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03pandas多級(jí)分組實(shí)現(xiàn)排序的方法
下面小編就為大家分享一篇pandas多級(jí)分組實(shí)現(xiàn)排序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python tempfile模塊學(xué)習(xí)筆記(臨時(shí)文件)
這篇文章主要介紹了Python tempfile模塊學(xué)習(xí)筆記,著重講解了模塊下的幾個(gè)函數(shù),需要的朋友可以參考下2014-05-05Python爬蟲scrapy框架Cookie池(微博Cookie池)的使用
這篇文章主要介紹了Python爬蟲scrapy框架Cookie池(微博Cookie池)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01python Django編寫接口并用Jmeter測(cè)試的方法
這篇文章主要介紹了python Django編寫接口并用Jmeter測(cè)試,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python獲取時(shí)間范圍內(nèi)日期列表和周列表的函數(shù)
這篇文章主要介紹了Python獲取時(shí)間范圍內(nèi)日期列表和周列表的函數(shù),文中給大家提到了python獲取日期的周數(shù) ,需要的朋友可以參考下2019-08-08