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

如何将Pyshark读取的PCAP数据包转换为二进制值?

将Pyshark捕获的数据包转换为二进制并重新发送

嘿,刚好我之前做过类似的操作,这就教你怎么把Pyshark读取到的数据包转换成可用于网络发送的二进制数据:

核心方法:获取原始二进制数据包

Pyshark的每个Packet对象都自带了获取原始二进制内容的方法,直接调用就能拿到和pcap文件里完全一致的字节流,步骤如下:

  1. 读取pcap文件后,直接调用数据包的get_raw_packet()方法,它会返回bytes类型的二进制数据,这正是你需要的:
import pyshark

pcap_dir = "你的pcap文件路径"
packets = pyshark.FileCapture(pcap_dir)

# 获取第一个数据包的二进制原始数据
raw_binary_packet = packets[0].get_raw_packet()
  1. 如果你使用的是较旧版本的Pyshark,也可以尝试访问raw_packet属性(不过更推荐用上面的方法,兼容性更好):
raw_binary_packet = packets[0].raw_packet

用二进制数据重新发送数据包

拿到二进制数据后,你可以用Python的socket模块创建原始套接字来发送,示例代码如下(注意:需要管理员/root权限运行):

import socket

# 创建原始套接字,适用于Linux链路层发送
# Windows下可改用AF_INET结合SOCK_RAW,需调整协议参数
sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0003))
# 绑定到你的网卡接口,比如"eth0"或"wlan0",根据实际情况修改
sock.bind(("eth0", 0))
# 发送二进制数据包
sock.send(raw_binary_packet)
# 关闭套接字
sock.close()

关键注意事项

  • 权限要求:使用原始套接字发送数据包通常需要管理员/root权限,Linux下要加sudo运行脚本,Windows下需要以管理员身份启动命令提示符或IDE。
  • 网卡绑定:必须绑定到正确的网卡接口,否则数据包无法正确投递到目标网络。
  • 数据包适配:如果原数据包的MAC/IP地址是针对特定设备的,直接发送可能无法被目标接收,必要时可以先解析数据包修改相关字段后再转换为二进制发送。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:05:40