如何使用libpcap来解析pcap文件。

时间:2011-07-29 09:17:45

标签: wireshark pcap libpcap

我想使用.pcap库解析WireShark生成的libpcap文件中的RTP数据包。
我已经看到了一些在设备上使用libpcap来获取数据包的示例,但我无法找到任何可以从.pcap文件中提取特定数据包的示例。

任何人都知道这些示例的链接或任何拥有此类示例代码的人。

感谢。

1 个答案:

答案 0 :(得分:2)

libpcap使用函数 pcap_compile pcap_setfilter (描述here和示例代码)在启动捕获循环之前过滤数据包。过滤器语法在man page for TCPDump

中描述

过滤RTP数据包带来了进一步的挑战,因为它们不是通过标准端口发送的,并且没有其他方便的方法来检测协议。用于RTP的端口由RTP设置之前的控制信道协议(例如SIP)协商。 This example包含SIP消息,其中 rport = 5060 行提供用于RTP的UDP端口(参见下文)。

因此,检测RTP需要检查SIP协议数据包(或其他信令协议,以确定要过滤的RTP端口。

SIP/2.0 200 OK
Call-ID: 29858147-465b0752@29858051-465b07b2
Contact: pel<sip:35104723@192.168.1.2:5060;line=7d36558f31367051>;q=0.500;expires=1200
CSeq: 6 REGISTER
From: <sip:35104723@sip.cybercity.dk>;tag=659abf
P-Associated-URI: <sip:35104723@sip.cybercity.dk>
To: <sip:35104723@sip.cybercity.dk>;tag=00-04087-1701bae7-76fb74995
Via: SIP/2.0/UDP 192.168.1.2;received=80.230.219.70;rport=5060;branch=z9hG4bKnp6658824-465059f1192.168.1.2