You need to enable JavaScript to run this app. 如何在tshark捕获过滤器中使用diameter、sip显示过滤规则减小pcap体积
优惠活动
大模型
产品
解决方案
定价
更多

如何在tshark捕获过滤器中使用diameter、sip显示过滤规则减小pcap体积

解决方案

首先明确:tshark使用的捕获过滤器是BPF语法,仅支持匹配传输层及以下的固定偏移字段,无法直接解析Diameter、SIP这类应用层的协议字段,无法1:1直接转换你使用的显示过滤规则。但可以通过「捕获阶段先过滤无关端口+实时管道调用显示过滤」的方式,完全跳过全量5G文件落盘的步骤,实现捕获即过滤的效果。

最优实现方案(100%匹配原有过滤规则)

直接通过管道将捕获的流量实时喂给tshark做显示过滤,全程不生成全量中间文件,命令如下:

# 请将命令中的<msisdn>替换为你实际需要匹配的号码,如有自定义Diameter/SIP端口也同步修改
tshark -i 1 -w - -f "port 3868 or port 5060 or port 5061" | tshark -r - -Y "(diameter &&! diameter.cmd.code==280) or sip.from.addr contains <msisdn>" -w /tmp/reduced3.pcap

命令逻辑说明:

  • 第一个tshark进程负责抓包,-w - 指定将捕获的原始包输出到标准输出,-f 后的BPF规则会直接在捕获阶段过滤掉非Diameter(默认端口3868)、非SIP(默认明文端口5060、TLS端口5061)的无关流量,大幅减少后续处理的数据量
  • 第二个tshark进程从标准输入读取实时捕获的包,直接应用你原本的显示过滤规则,最终仅将符合要求的包写入目标文件,没有全量数据落盘的环节,耗时远低于先存全量再二次处理的流程

备选方案:纯BPF捕获过滤(仅适配固定链路场景)

如果你的环境不支持管道多进程操作,可以写近似BPF规则实现过滤,缺点是无法100%匹配显示过滤规则,需要根据实际链路的传输层参数调整字段偏移:

# 需根据实际使用的端口、Diameter/TCP偏移、MSISDN对应的IP调整规则
tshark -i 1 -f "(port 3868 and (udp[8:3]!= 0x118 or tcp[20:3]!= 0x118)) or (port 5060 or port 5061 and host <MSISDN对应的IP>)" -w /tmp/reduced3.pcap

注意:Diameter命令码280的十六进制为0x118,上述规则中的偏移值仅适用于无TCP选项的普通TCP包/UDP包,若存在TCP选项、VLAN标签等场景需要自行调整偏移,准确率没有管道方案高,仅做应急备选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 21:15:04