.pcap
ライブラリを使用してWireSharkから生成されたファイルからのRTPパケットのみを解析したいと思いlibpcap
ます。
を使用してパケットを取得するためにデバイスで機能する例をいくつか見てきましたlibpcap
が、ファイルから特定のパケットを抽出できる例を見つけることができません.pcap
。
誰もがそのような例へのリンクを知っているか、これを行うためのサンプルコードを持っている人は誰でも知っています。
ありがとう。
libpcapは、関数pcap_compileおよびpcap_setfilter(ここではサンプルコードで説明)を使用して、キャプチャループを開始する前にパケットをフィルタリングします。フィルタの構文については、TCPDumpのマニュアルページで説明されています。
RTPパケットは標準ポートを介して送信されず、プロトコルを検出するための他の便利な方法がないため、RTPパケットのフィルタリングにはさらに課題があります。RTPに使用されるポートは、RTPセットアップの前に制御チャネルプロトコル(SIPなど)によってネゴシエートされます。この例には、行rport = 5060がRTPに使用されるUDPポートを提供するSIPメッセージが含まれています(以下を参照)。
したがって、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