1. 程式人生 > >TCP/UDP客戶端

TCP/UDP客戶端

response target 發送 垃圾 .py 測試的 要求 轉換 創建

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 =

client.recvfrom(4096)

#打印數據
print(data)

大體上,TCP與UDP客戶端是沒有很大區別的,只是套接字類型改為SOCK_DGRAM,同時不需要事先建立連接,

因為UDP是面向無連接的。在發送數據的時候只需要使用函數sendto( )

最後使用recvfrom( )函數來接收返回的數據包。

TCP/UDP客戶端