TCP/UDP客戶端
Python 網絡編程————模塊socekt
在滲透測試的過程中,經常會遇到需要創建一個TCP客戶端來連接服務器、發送垃圾數據、進行模糊測試活進行其他任務的情況。
簡單的TCP客戶端代碼:
#!/usr/bin/env python3.5
#filename = TCP_client.py
import socket
target_host = "www.qq.com"
target_port = 80
#建立一個socket對象
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#連接客戶端
client.connect((target_host,target_port))
#發送一些數據
a = "GET / HTTP/1.1\r\nHost: qq.com\r\n\r\n"
b =bytes(a,encoding=‘utf-8‘)
client.send(b)
#接收一些數據
response = client.recv(4096)
print(response)
解析:
AF_INET = IPv4 address-family
SOCK_STREAM = TCP-Client
在"#發送數據"這個代碼端中,python3要求.send( )之後必須是bytes,所以通過我們把需要發送給客戶端的數據
通過變量 a 指定,這個a 是一個字符串。通過python3內置函數 bytes( )來轉換從類型bytes,然後發送給client
UDP客戶端:
import socket
target_host = ‘127.0.0.1‘
target_port = 53
#建立一個socket對象
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#轉換str到bytes
a = "AAABBBBCCCC"
b = bytes(a,encoding=‘utf-8‘)
#發送一些數據
client.sendto(b,(target_host,target_port))
#接收數據
data, addr =
#打印數據
print(data)
大體上,TCP與UDP客戶端是沒有很大區別的,只是套接字類型改為SOCK_DGRAM,同時不需要事先建立連接,
因為UDP是面向無連接的。在發送數據的時候只需要使用函數sendto( )
最後使用recvfrom( )函數來接收返回的數據包。
TCP/UDP客戶端