国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用Python3制作TCP端口掃描器

2020-02-23 04:33:51
字體:
來源:轉載
供稿:網友

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

TCP connect掃描:也稱為全連接掃描,這種方式直接連接到目標端口,完成了TCP三次握手的過程,這種方式掃描結果比較準確,但速度比較慢而且可輕易被目標系統檢測到。

TCP SYN掃描:也稱為半開放掃描,這種方式將發送一個SYN包,啟動一個TCP會話,并等待目標響應數據包。如果收到的是一個RST包,則表明端口是關閉的,而如果收到的是一個SYN/ACK包,則表示相應的端口是打開的。

Tcp FIN掃描:這種方式發送一個表示拆除一個活動的TCP連接的FIN包,讓對方關閉連接。如果收到了一個RST包,則表明相應的端口是關閉的。

TCP XMAS掃描:這種方式通過發送PSH、FIN、URG、和TCP標志位被設為1的數據包。如果收到了一個RST包,則表明相應的端口是關閉的。

下面我們將使用Python3 實現TCP全連接端口掃描器,下面進入編程環節。

編碼實戰

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

#!/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函數,從其中的內容可以看出,只是進行了簡單的TCP連接,如果連接成功則判斷為端口打開,否則視為關閉。 我們來看一下運行結果:

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

#!/usr/bin/python3# -*- coding: utf-8 -*-from socket import *import threadinglock = threading.Lock()openNum = 0threads = []def portScanner(host,port):  global openNum  try:    s = socket(AF_INET,SOCK_STREAM)    s.connect((host,port))    lock.acquire()    openNum+=1    print('[+] %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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲松县| 泗洪县| 赤峰市| 达孜县| 吴堡县| 营口市| 读书| 桂阳县| 吴川市| 闽清县| 梁山县| 祁阳县| 额济纳旗| 本溪市| 陕西省| 尤溪县| 长子县| 卢龙县| 黄山市| 怀远县| 富源县| 宁国市| 龙陵县| 平罗县| 泗洪县| 汉寿县| 宜章县| 辉县市| 嘉兴市| 阜城县| 兴隆县| 贞丰县| 陆川县| 临泉县| 屏东县| 灵宝市| 涪陵区| 阳西县| 百色市| 徐汇区| 兴义市|