首页 > 代码库 > TCP/UDP客户端

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 =
client.recvfrom(4096)

#打印数据
print(data)

大体上,TCP与UDP客户端是没有很大区别的,只是套接字类型改为SOCK_DGRAM,同时不需要事先建立连接,

因为UDP是面向无连接的。在发送数据的时候只需要使用函数sendto( )

最后使用recvfrom( )函数来接收返回的数据包。

 

TCP/UDP客户端