我有一个带有voip对话的pcap文件,如何将RTP数据包与其他数据包分开?

我可以获得sip数据包,但我无法区分其余的RTP数据包。

===============>>#1 票数:1 已采纳

在文件中搜索RFC3550中定义的RTP标头。 或者更好地使用pcap-filter,例如使用这个 wiki(查找“Q:什么是仅用于捕获SIP和RTP数据包的好过滤器?”)。

===============>>#2 票数:1

如果你想在wireshark中看到RTP流量,那么:

  1. 选择分析 - >显示过滤器...
  2. 选择“UDP”,确定
  3. 右键单击任何UDP数据包,然后选择“解码为...”
  4. 从列表中选择“RTP”,确定
  5. 现在您可以看到所有RTP数据包。

希望有所帮助。 :)

ps编辑注意这是针对Wireshark的。 感谢评论员指出了这一点!

===============>>#3 票数:1

检查有关PCap过滤器的@macs建议。 如果这不能满足您的需求(例如,您需要过滤掉特定SIP会话的RTP数据包),则没有简单的方法。 您需要解析SIP消息,检索RTP端口号,在特定时间段内接收来自/来自这些端口的数据包,并(可选)通过检查其标头(标头中的magic number )来检查这些数据包是否为RTP

===============>>#4 票数:0

从pcap文件中提取RTP / RTCP数据包的开源软件包括:

  • rtpbreak: http ://dallachiesa.com/code/rtpbreak/doc/rtpbreak_en.html
  • xplico: http ://www.xplico.org

从源代码中,您可以查看和理解所使用的方法。

我可以获得sip数据包,但我无法区分其余的RTP数据包。

如果您能够解码SIP,那么您可以找到(在INVITE消息内)SDP消息。 如果你解码它,你可以找到RTP“流”的IP和PORT(和RTCP =>端口+ 1)。 通过这些信息,您可以唯一地识别RTP和RTCP数据包。 请记住,STUN协议通常包(具有相同的IP-PORT)必须与RTP分开。 您必须考虑数据包捕获的位置(网络上下文和约束),您可以考虑NAT。

  ask by user1027524 translate from so

未解决问题?本站智能推荐:

1回复

pcap_next_ex()从未设置指向原始数据包的指针?

我尝试使用libpcap(在CentOS 6上为1.4.0)读入原始数据包。 但是,由于某些原因,pcap_next_ex()之后的rawPacket始终为NULL。 但是,pcap_next_ex()确实返回1,尽管这可能意味着超时已过期(超时是通过哪种方式设置的?)。 首先
1回复

丢弃捕获的数据包

我正在工作的项目要求丢弃捕获的数据包。 我可以像这样使用libpcap成功捕获数据包, 在回调函数中,我在num_packets参数中捕获给定数量的数据包。 我的要求是丢弃捕获的数据包。 我尝试检查帮助,结果空手而归。 非常感谢执行此代码段以通过libpcap删除捕获的数据包
3回复

pCap捕获传出的数据包

问题是,pCap库是否允许捕获本地系统生成的数据包? 类似于netfitler钩子NF_IP_LOCAL_OUT但在用户空间? 如果pCap不支持此功能,是否有任何支持良好的库可以? 在网上看,有人提到pCap有一个名为setDirection的功能,它根据流量方向设置我们捕获的流量
1回复

如何使用netfilter捕获数据包?

我正在使用libpcap捕获GRE数据包并进行转发,我认为效率不是很好。 所以我决定使用netfilter进行转发,但这是我的新手。 有人可以给我一个 使用netfilter捕获IP或GRE数据包的简单示例? 谢谢!
2回复

libpcap数据包大小

我在Linux上使用libpcap(centos),我正在遵循这个指南我想简单地打印出ascii中的整个数据包,并且我设法通过在“my_callback”中将其转换为u_char *来使其工作“功能。 但我无法弄清楚如何获得数据的长度。 strstr不起作用。 标头有一个len成员,您可以
2回复

为什么我的数据包读取程序返回错误的数据?

我编写了一个使用libpcap读取捕获文件的数据包读取器。 它读取捕获文件并将捕获的数据上传到MySQL数据库。 有时它似乎可以正常工作,而其他方法则返回无效数据(例如,源IP和目标IP相同,TCP端口均为垃圾)。 我正在虚拟RHEL 5下运行此代码。这是我的代码(很抱歉,如果代码很长或不
3回复

为C中捕获的数据包创建PCAP文件

我正在使用一种工具,但是我可以在接口中捕获传入的数据包(l2缓冲区和L2长度,有效负载),并且可以在控制台上打印该数据包。 现在,我想将这些数据包写入pcap文件,以便可以将该文件传输到其他平台并读取数据包信息。 如何打开pcap文件并将数据包缓冲区写入pcap文件? 如何填充stru
1回复

为什么pcap_loop()和获取数据包之间会有很长的延迟?

我正在使用libpcap编写嗅探器。 我的问题是,在调用pcap_loop()或pcap_next()与实际获取数据包(调用回调函数)之间存在7-10秒的延迟。 但是,如果我在同一设备上使用具有相同过滤器的Wireshark,则在单击“开始”按钮后就不会出现此类延迟。 为什么我的程序会有延
2回复

如何阻止来自计算机端口23的数据包?

我正在使用libpcap库。 我使用pcap.h制作了一个数据包嗅探器C程序。 现在,我想阻止通过eth0设备进入计算机端口23的数据包。 我试过了pcap_filter函数,但是它对阻塞没有用。 请向我解释如何使用C程序对该功能进行编码。
1回复

pcap_open_dead模拟完整的UDP数据包捕获

在回答了有关创建pcap文件的问题之后,我现在想模拟一个完整UDP数据包的保存,包括以太网,IP和UDP标头。 我应该使用哪种DLT_XXX类型? 我相信使用pcap_open_dead(DLT_RAW,65535)时pcap_dump()会跳过以太网头。