Python UDP客户端运行报TypeError: 需要bytes类型而非str问题咨询
报错原因
这个报错是Python 3的特有特性导致的:Python 3中socket接口传输的内容必须是字节类型,你原代码直接传入字符串类型就会触发该类型错误。
修复方案
你可以选择以下任意一种方式替换"AAABBBCCC"即可解决报错:
- 直接给字符串加字节前缀:
b"AAABBBCCC",适合不需要动态生成内容的场景 - 对字符串调用编码方法转字节:
"AAABBBCCC".encode('utf-8'),适合需要动态拼接字符串再发送的场景
修复后的完整代码
import socket target_host = "127.0.0.1" target_port = 80 # 创建socket对象 client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 发送数据 client.sendto(b"AAABBBCCC", (target_host, target_port)) # 接收返回数据 data, addr = client.recvfrom(4096) print(data)
渗透测试场景适配建议
如果你要把这段代码用于渗透测试相关工作,可以根据实际需求调整:
- 修改
target_host、target_port为目标服务的对应地址和端口 - 把字节内容替换为你要测试的UDP服务的探测payload,比如DNS查询、SNMP探测、自定义UDP服务的漏洞验证payload等
- 可自行增加超时设置、批量发送、多目标遍历等逻辑适配不同的测试需求
内容的提问来源于stack exchange,提问作者d0lphin
相关产品推荐
相关产品推荐

