You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python 3中使用Scapy将PCAP写入字节或字符串变量

解决方法

你需要调整代码,利用io.BytesIO的读写特性获取PCAP格式的字节数据,而不是直接传入空字节变量。以下是修正后的代码:

import io
from scapy.all import *

# 构造目标数据包(原代码中你覆盖了packet变量,这里保留第二个HTTP请求包示例)
packet = IP(src='127.0.0.1', dst='127.0.0.2')/TCP()/"GET / HTTP/1.0\r\n\r\n"

# 创建BytesIO内存缓冲区
buffer = io.BytesIO()
# 将数据包以PCAP格式写入缓冲区
wrpcap(buffer, [packet])
# 将缓冲区指针移至起始位置
buffer.seek(0)
# 读取缓冲区中的字节数据到content变量
content = buffer.read()

# 验证结果(输出大于0的数值即为成功)
print(len(content))

原代码失败原因

  1. io.BytesIO(content)用空字节初始化缓冲区,但这个操作不会让后续写入修改原content变量——BytesIO内部维护独立的内存缓冲区,和传入的content无引用关联。
  2. 你从未从缓冲区读取写入的PCAP数据,直接使用原content自然为空。

通过创建独立的BytesIO实例,写入后重置指针并读取,就能正确获取PCAP格式的字节数据。

内容的提问来源于stack exchange,提问作者Addy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:24:40