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

如何用tshark等工具从pcap文件提取UDP报文二进制负载?

使用tshark提取UDP负载二进制数据(支持过滤)

直接用tshark配合xxd就能实现你的需求,不需要自己写代码。以下是具体操作:

基础命令(提取所有UDP负载)

运行这条命令可以把pcap里所有UDP数据包的负载提取成二进制文件:

tshark -r input.pcap -Y "udp" -T fields -e udp.payload | xxd -r -p > udp_payloads.bin

参数说明:

  • -r input.pcap:指定你要处理的pcap输入文件
  • -Y "udp":过滤出所有UDP数据包(替换成更精准的规则就能实现端口过滤)
  • -T fields -e udp.payload:仅输出UDP负载的十六进制原始内容
  • xxd -r -p:把tshark输出的十六进制字符串还原成二进制数据(这步是关键,保证输出是原始二进制而非文本)
  • > udp_payloads.bin:将最终的二进制负载写入目标文件

过滤特定UDP端口

如果要提取指定端口的UDP负载,修改-Y后的过滤规则即可。比如只提取源/目的端口为5000的UDP负载:

tshark -r input.pcap -Y "udp.port == 5000" -T fields -e udp.payload | xxd -r -p > udp_port5000_payloads.bin

更复杂的过滤规则也支持,比如同时匹配源端口1234和目的端口5678:

tshark -r input.pcap -Y "udp.srcport == 1234 and udp.dstport == 5678" -T fields -e udp.payload | xxd -r -p > filtered_payloads.bin

注意事项

  • 若pcap中存在IP分片的UDP包,tshark默认会自动重组分片,提取的是完整的负载;如果不需要重组,可添加--disable-protocol ip.reassembly参数
  • 确保你的系统安装了xxd(Linux/macOS一般默认自带,Windows可通过Git Bash或WSL使用)
  • 如果需要将每个UDP负载单独保存为文件,可以结合简单的shell脚本循环处理,但上述命令默认会把所有负载按数据包顺序拼接成一个二进制文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 10:51:04