本文目錄一覽:
- 1、python探測哪些端口開了http服務
- 2、python 如何檢查端口是否是被佔用
- 3、python 查看端口是否開通
- 4、python怎樣實現監聽程序的端口。如apache開着, 一旦有數據到達80的端口 他就會記錄下來
- 5、python獲取系統下打開的端口
- 6、如何掃描網絡中的端口 python
python探測哪些端口開了http服務
第一個問題沒啥,用0作為端口那麼就會選擇本地沒有使用的端口。 第二個要麼用python序列化的方法,只要對端用反序列化解釋就可以。要麼用自定義的,藉助於struct的pack/unpack,或者如果跟c通訊,用ctypes定義結構體也可以。看你需要了
python 如何檢查端口是否是被佔用
可以嘗試用socket去連接相應的端口’成功表明這個端口開放,可能被佔用
python 查看端口是否開通
一、常見端口掃描的原理
0、秘密掃描
秘密掃描是一種不被審計工具所檢測的掃描技術。
它通常用於在通過普通的防火牆或路由器的篩選(filtering)時隱藏自己。
秘密掃描能躲避IDS、防火牆、包過濾器和日誌審計,從而獲取目標端口的開放或關閉的信息。由於沒有包含TCP 3次握手協議的任何部分,所以無法被記錄下來,比半連接掃描更為隱蔽。
但是這種掃描的缺點是掃描結果的不可靠性會增加,而且掃描主機也需要自己構造IP包。現有的秘密掃描有TCP FIN掃描、TCP ACK掃描、NULL掃描、XMAS掃描和SYN/ACK掃描等。
1、Connect()掃描
此掃描試圖與每一個TCP端口進行「三次握手」通信。如果能夠成功建立接連,則證明端口開發,否則為關閉。準確度很高,但是最容易被防火牆和IDS檢測到,並且在目標主機的日誌中會記錄大量的連接請求以及錯誤信息。
TCP connect端口掃描服務端與客戶端建立連接成功(目標端口開放)的過程:
① Client端發送SYN;
② Server端返回SYN/ACK,表明端口開放;
③ Client端返回ACK,表明連接已建立;
④ Client端主動斷開連接。
建立連接成功(目標端口開放)
TCP connect端口掃描服務端與客戶端未建立連接成功(目標端口關閉)過程:
① Client端發送SYN;
② Server端返回RST/ACK,表明端口未開放。
優點:實現簡單,對操作者的權限沒有嚴格要求(有些類型的端口掃描需要操作者具有root權限),系統中的任何用戶都有權力使用這個調用,而且如果想要得到從目標端口返回banners信息,也只能採用這一方法。
另一優點是掃描速度快。如果對每個目標端口以線性的方式,使用單獨的connect()調用,可以通過同時打開多個套接字,從而加速掃描。
缺點:是會在目標主機的日誌記錄中留下痕迹,易被發現,並且數據包會被過濾掉。目標主機的logs文件會顯示一連串的連接和連接出錯的服務信息,並且能很快地使它關閉。
2、SYN掃描
掃描器向目標主機的一個端口發送請求連接的SYN包,掃描器在收到SYN/ACK後,不是發送的ACK應答而是發送RST包請求斷開連接。這樣,三次握手就沒有完成,無法建立正常的TCP連接,因此,這次掃描就不會被記錄到系統日誌中。這種掃描技術一般不會在目標主機上留下掃描痕迹。但是,這種掃描需要有root權限。
端口開放:1、Client發送SYN 2、Server端發送SYN/ACK 3、Client發送RST斷開(只需要前兩步就可以判斷端口開放)
端口關閉:1、Client發送SYN 2、Server端回復RST(表示端口關閉)
優點:SYN掃描要比TCP Connect()掃描隱蔽一些,SYN僅僅需要發送初始的SYN數據包給目標主機,如果端口開放,則相應SYN-ACK數據包;如果關閉,則響應RST數據包;
3、NULL掃描
python怎樣實現監聽程序的端口。如apache開着, 一旦有數據到達80的端口 他就會記錄下來
apache佔用了80端口python的socket就不能用了啊,要不怎麼知道數據發給誰呢,你可以讓python使用80,apache使用別的,然後讓python收到後轉發給apache。
python獲取系統下打開的端口
第一個問題沒啥,用0作為端口那麼就會選擇本地沒有使用的端口。
第二個要麼用python序列化的方法,只要對端用反序列化解釋就可以。要麼用自定義的,藉助於struct的pack/unpack,或者如果跟c通訊,用ctypes定義結構體也可以。看你需要了
如何掃描網絡中的端口 python
from socket import socket
def scan_address(host, port):
s = socket()
s.settimeout(3)
try:
s.connect((host, port))
except:
return False
s.close()
return True
scan_address(‘localhost’, 5432)
True
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/187176.html