A. 如何用python方法檢測UDP埠
如何用python方法檢測UDP埠,首先要了解什麼是UDP埠及作用。網上搜索了一圈後,我得到手姿頃的個人理解是:UDP埠是含有網路服務必須的源埠和目的埠信息,用以建立和實現網路傳輸服務。
那麼如何用python方法檢測UDP埠呢?看看下邊這段網友提供的代碼吧。
socket、threading、time、Queue這些冊模是要用到的python方法模塊。畢陸
B. 如何用python方法檢測UDP埠
本文實例講述了李殲python檢測遠程udp埠是否打開的方法。分享給大家供大家參考。具體實現方法如下:
復制代碼蘆備代碼如下:
import socket
import threading
import time
import struct
import Queue
queue = Queue.Queue()
def udp_sender(ip,port):
try:
ADDR = (ip,port)
sock_udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock_udp.sendto("abcd...",ADDR)
sock_udp.close()
except:
pass
def icmp_receiver(ip,port):
icmp = socket.getprotobyname("icmp")
try:
sock_icmp = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
except socket.error, (errno, msg):
if errno == 1:
# Operation not permitted
msg = msg + (
" - Note that ICMP messages can only be sent from processes"
" running as root."
)
raise socket.error(msg)
raise # raise the original error
sock_icmp.settimeout(3)
try:
recPacket,addr = sock_icmp.recvfrom(64)
except:
queue.put(True)
return
icmpHeader = recPacket[20:28]
icmpPort = int(recPacket.encode('hex')[100:104],16)
head_type, code, checksum, packetID, sequence = struct.unpack(
"bbHHh", icmpHeader
)
sock_icmp.close()
if code == 3 and icmpPort == port and addr[0] == ip:
queue.put(False)
return
def checker_udp(ip,port):
thread_udp = threading.Thread(target=udp_sender,args=(ip,port))
thread_icmp = threading.Thread(target=icmp_receiver,args=(ip,port))
thread_udp.daemon= True
thread_icmp.daemon = True
thread_icmp.start()
time.sleep(0.1)
thread_udp.start()
thread_icmp.join()
thread_udp.join()
return queue.get(False)
if __name__ == '__main__':
import sys
print checker_udp(sys.argv[1],int(sys.argv[2]))
希望本文所述對大家的Python程序設計陪擾毀有所幫助。
C. python獲取系統下打開的埠
第一個問題沒啥,用0作為埠那絕咐么就會此宏喚選擇本地沒有使用的端森凱口。
第二個要麼用python序列化的方法,只要對端用反序列化解釋就可以。要麼用自定義的,藉助於struct的pack/unpack,或者如果跟c通訊,用ctypes定義結構體也可以。看你需要了
D. Python socket 監控 埠
這個?想怎凱殲首么顯示?tcp_monitor調用了沒有?
即使調用了,connect到服改雹務器,又沒有發請求,又沒有收數據,沒什麼好盯數顯示的呀。
E. 如何掃描網路中的埠 python
>>腔卜>fromsocketimportsocket
>>>def伍拍穗scan_address(host,port):
s=socket()
s.settimeout(3)
try:
s.connect((host,port))
except:
returnFalse
s.close()
returnTrue
>>>scan_address('localhost'賀沒,5432)
True
F. 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掃描
G. python怎樣實現監聽程序的埠。如apache開著, 一旦有數據到達80的埠 他就會記錄下來
apache佔用了80埠python的socket就不能用了啊,要不怎麼知道數據發給誰呢,褲賣培你可以讓python使用80,apache使胡唯用別的,然後讓python收到後轉配鏈發給apache。
H. Python如何監控network
"抓取network里所有的數據"的意思是抓取瀏覽器所有的數據嗎?如喚辯果是, 那你的關注重點就不應行神該是python這門語言了, 你可以直接用抓包工具如wireshark抓取所有經過網卡的數據,或者用fiddler抓包, 如和帶缺果只是想做爬蟲, 沒有必要抓取所有的請求, 比如說css, jpg等靜態資源沒有用處(抓取圖片另算).
I. python 如何檢查埠是否是被佔用
可以嘗試用socket去連接相應的埠'成功表明這個埠開放,可能被佔用
J. 用Python做個網路監視器,錯誤提示無效的參數
那個65535是接收最大位元組數,而且s.recvfrom()是udp協議的方法。