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( )函数来接收返回的数据包。