【问题标题】:How to use libpcap to parse pcap file.如何使用 libpcap 解析 pcap 文件。
【发布时间】:2011-10-15 19:24:06
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: wireshark pcap libpcap


    【解决方案1】:

    libpcap 使用函数 pcap_compilepcap_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
    

    【讨论】:

    • 感谢您的回复,我将解析静态 .pcap 文件,那么我该如何开始,pcap_compile 函数是否有任何直接过滤选项,或者我需要为此使用 BPF。如果是 BPF,那么我如何在其中指定协议?
    • 您将传递一个 BPF 过滤器,例如“UDP 端口 5060”来过滤 SIP 流量。您可以尝试使用 tcpdump -r 从静态捕获文件中读取数据
    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2011-09-11
    • 2016-04-07
    • 2015-01-14
    • 1970-01-01
    相关资源
    最近更新 更多