日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python3实现TCP端口扫描器

發(fā)布時間:2025/3/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3实现TCP端口扫描器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?本文來自 高海峰對 玄魂工作室 的投稿

作者:高海峰 QQ:543589796

在滲透測試的初步階段通常我們都需要對攻擊目標(biāo)進行信息搜集,而端口掃描就是信息搜集中至關(guān)重要的一個步驟。通過端口掃描我們可以了解到目標(biāo)主機都開放了哪些服務(wù),甚至能根據(jù)服務(wù)猜測可能存在某些漏洞。 TCP端口掃描一般分為以下幾種類型:

  • TCP connect掃描:也稱為全連接掃描,這種方式直接連接到目標(biāo)端口,完成了TCP三次握手的過程,這種方式掃描結(jié)果比較準(zhǔn)確,但速度比較慢而且可輕易被目標(biāo)系統(tǒng)檢測到。
  • TCP SYN掃描:也稱為半開放掃描,這種方式將發(fā)送一個SYN包,啟動一個TCP會話,并等待目標(biāo)響應(yīng)數(shù)據(jù)包。如果收到的是一個RST包,則表明端口是關(guān)閉的,而如果收到的是一個SYN/ACK包,則表示相應(yīng)的端口是打開的。
  • Tcp FIN掃描:這種方式發(fā)送一個表示拆除一個活動的TCP連接的FIN包,讓對方關(guān)閉連接。如果收到了一個RST包,則表明相應(yīng)的端口是關(guān)閉的。
  • TCP XMAS掃描:這種方式通過發(fā)送PSH、FIN、URG、和TCP標(biāo)志位被設(shè)為1的數(shù)據(jù)包。如果收到了一個RST包,則表明相應(yīng)的端口是關(guān)閉的。
  • 下面我們將使用Python3 實現(xiàn)TCP全連接端口掃描器,下面進入編程環(huán)節(jié)。

    編碼實戰(zhàn)?

    全連接掃描方式的核心就是針對不同端口進行TCP連接,根據(jù)是否連接成功來判斷端口是否打開,現(xiàn)在我們來實現(xiàn)一個最簡單的端口掃描器:

    #!/usr/bin/python3 # -*- coding: utf-8 -*- from socket import *def portScanner(host,port):try:s = socket(AF_INET,SOCK_STREAM)s.connect((host,port))print('[+] %d open' % port)s.close()except:print('[-] %d close' % port)def main():setdefaulttimeout(1)for p in range(1,1024):portScanner('192.168.0.100',p)if __name__ == '__main__':main()

    ?

    這段代碼的核心就是portScanner函數(shù),從其中的內(nèi)容可以看出,只是進行了簡單的TCP連接,如果連接成功則判斷為端口打開,否則視為關(guān)閉。 我們來看一下運行結(jié)果:

    這樣的掃描看起來效率太低了,實際也確實很慢,因為我們設(shè)置了默認(rèn)的超時時間為1秒,這要是掃描10000個端口,豈不是要等到花都謝了? 最簡單的辦法就是用多線程來提高效率,雖然python的多線程有點太弱了,不過至少可以利用我們等待的時間去干點別的。另外之前掃描的端口比較多, 顯示的信息我們看起來不方便,這次我們只顯示我們關(guān)心的打開的端口,并將打開端口的數(shù)量在掃描結(jié)束的時候顯示出來。

    #!/usr/bin/python3 # -*- coding: utf-8 -*- from socket import * import threadinglock = threading.Lock() openNum = 0 threads = []def portScanner(host,port):global openNumtry:s = socket(AF_INET,SOCK_STREAM)s.connect((host,port))lock.acquire()openNum+=1print('[+] %d open' % port)lock.release()s.close()except:passdef main():setdefaulttimeout(1)for p in range(1,1024):t = threading.Thread(target=portScanner,args=('192.168.0.100',p))threads.append(t)t.start() for t in threads:t.join()print('[*] The scan is complete!')print('[*] A total of %d open port ' % (openNum))if __name__ == '__main__':main()

    ?

    運行看一下效果,如下圖:

    這下看起來是不是方便多了?至此效率上的問題解決了,現(xiàn)在我們還需要為掃描器增加一個 參數(shù)解析的功能,這樣才能看起來像個樣子,總不能每次都改代碼來修改掃描目標(biāo)和端口吧!

    參數(shù)解析我們將用python3自帶的標(biāo)準(zhǔn)模塊argparse,這樣我們就省去了自己解析字符串的麻煩! 下面來看代碼:

    #!/usr/bin/python3 # -*- coding: utf-8 -*- from socket import * import threading import argparselock = threading.Lock() openNum = 0 threads = []def portScanner(host,port):global openNumtry:s = socket(AF_INET,SOCK_STREAM)s.connect((host,port))lock.acquire()openNum+=1print('[+] %d open' % port)lock.release()s.close()except:passdef main():p = argparse.ArgumentParser(description='Port scanner!.')p.add_argument('-H', dest='hosts', type=str)args = p.parse_args()hostList = args.hosts.split(',')setdefaulttimeout(1)for host in hostList:print('Scanning the host:%s......' % (host))for p in range(1,1024):t = threading.Thread(target=portScanner,args=(host,p))threads.append(t)t.start() for t in threads:t.join()print('[*] The host:%s scan is complete!' % (host))print('[*] A total of %d open port ' % (openNum))if __name__ == '__main__':main()

    ?

    看一下運行效果,如下圖:

    至此我們的端口掃描器就基本完成了,雖然功能比較簡單,旨在表達(dá)端口掃描器的基本實現(xiàn)思路! 至于更詳細(xì)的功能可以基于這個基本結(jié)構(gòu)來逐步完善!

    小結(jié)

    本節(jié)主要講解了Python3實現(xiàn)一個簡單的端口掃描器的過程,本次實驗采用了Tcp全連接的方式,不斷嘗試連接主機的端口來判斷端口的開放情況,雖然存在一些缺點, 不過這種方式最適合初學(xué)者學(xué)習(xí),至于更復(fù)雜的方式以后學(xué)習(xí)起來也不會很難。想舉一反三的朋友可以根據(jù)協(xié)議和端口的對照關(guān)系來完成掃描時同時輸出協(xié)議, 這樣看起來會更好一些,至于更詳細(xì)的功能就留給大家做練習(xí)了!

    查看完整系列教程,請關(guān)注我的微信訂閱號(xuanhun521,下方二維碼),回復(fù)“python”。問題討論請加qq群:Hacking?(1群):303242737?? Hacking?(2群):147098303。

    ?

    玄魂工作室-精彩不斷

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/xuanhun/p/5950433.html

    總結(jié)

    以上是生活随笔為你收集整理的Python3实现TCP端口扫描器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 成人永久视频 | 一区二区三区在线观看免费视频 | 国产一级一片免费播放 | 亚洲av无码成人精品区 | 日韩成人午夜电影 | 视频国产一区 | 日本在线网址 | 国产精品一区二区电影 | 2019天天干 | 国产 日韩 欧美在线 | 四虎影城库| 麻豆观看 | 国内精品视频在线 | 鸥美毛片 | 亚洲精品字幕在线观看 | 亚洲欧美一区二区三区在线观看 | 超碰98| 天降女子在线 | 日韩欧美国产亚洲 | 欧美午夜视频在线观看 | 久久99深爱久久99精品 | 日韩欧美影院 | 欧美骚视频| 国产精品一区一区三区 | 亚洲精品色午夜无码专区日韩 | 黄色在线免费看 | 播播成人网 | 国产精品日韩在线 | 人人妻人人澡人人爽欧美一区 | 欧美国产精品一区 | 美女一级黄色片 | 在线不卡毛片 | 久久一热| 加勒比综合网 | 国产乱人乱偷精品视频a人人澡 | 成人在线观看一区二区 | 男人激烈吮乳吃奶爽文 | 无码人妻精品一区二区三区夜夜嗨 | 日韩av网站在线观看 | 久久av色 | 性生生活大片又黄又 | 久久久久一区二区三区 | 69xxx免费视频 | 水果视频污 | 国产乱淫av一区二区三区 | 日韩欧美日韩 | av黄色在线免费观看 | 特级做a爱片免费69 少妇第一次交换又紧又爽 亚洲大胆人体 | 欧美日韩在线国产 | 91久久久久久久久久 | 777中文字幕 | 亚洲色图激情小说 | 亚洲精品成av人片天堂无码 | 亚洲精品男女 | 成av人片在线观看www | 女女同性高清片免费看 | 粉嫩aⅴ一区二区三区 | 国产污视频在线播放 | 国产精品电影网 | 午夜免费在线观看 | 少妇人妻在线视频 | 正在播放adn156松下纱荣子 | 夜夜爽夜夜叫夜夜高潮漏水 | 日本xx视频免费观看 | 亚洲一区二区av | 狠狠躁18三区二区一区 | 毛片免费视频 | 日本亚洲视频 | 一级色视频 | 伊人超碰在线 | 国产成人精品久久 | 日韩成人一区二区三区 | 午夜视频在线免费播放 | 色葡萄影院 | 毛片a区| 亚洲精品视频在线观看免费视频 | 日韩欧美亚洲一区二区三区 | 久久激情av| 欧美激情片在线观看 | 91桃色在线 | 农村脱精光一级 | 欧美1区2区3区4区 | 久久一区二区精品 | 影音先锋在线观看视频 | 午夜啪啪网 | 麻豆av一区二区 | 嫩草影院在线视频 | 一区二区三区天堂 | 国产亚洲精品码 | 美女啪啪一区二区 | 正在播放adn156松下纱荣子 | 夜夜嗨影院| 国精无码欧精品亚洲一区蜜桃 | 五月天婷婷导航 | 欧美日韩精品二区 | 91视频三区 | 亚洲综合日韩精品欧美综合区 | 久久精品视频网站 | 日本午夜网|