libpcap использует функции pcap_compile и pcap_setfilter (описано здесь с примером кода) для фильтрации пакетов перед запуском цикла захвата.Синтаксис фильтра описан на справочной странице для TCPDump
. Фильтрация RTP-пакетов представляет собой дополнительную проблему, поскольку они не отправляются через стандартный порт, и нет другого удобного метода для обнаружения протокола.,Порты, используемые для RTP, согласовываются протоколом канала управления (таким как SIP), предшествующим настройке RTP. Этот пример содержит сообщение SIP, где строка rport = 5060 указывает порт UDP, используемый для RTP (см. Ниже).
Поэтому для обнаружения 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