2011-07-29 2 views
1

Je souhaite analyser uniquement les paquets RTP à partir d'un fichier .pcap généré à partir de WireShark à l'aide de la bibliothèque libpcap.
J'ai vu le nombre d'exemple qui fonctionne sur le périphérique pour obtenir les paquets en utilisant libpcap mais je ne suis pas en mesure de trouver un exemple qui peut extraire des paquets spécifiques à partir du fichier .pcap. Tout le monde connait un lien vers de tels exemples ou n'importe qui ayant un exemple de code pour le faire.Comment utiliser libpcap pour analyser le fichier pcap.

Merci.

Répondre

2

libpcap utilise les fonctions pcap_compile et pcap_setfilter (décrit here avec le code d'exemple) pour filtrer les paquets avant de commencer la boucle de capture. La syntaxe du filtre est décrite dans le man page for TCPDump

Filtrer les paquets RTP présente un autre défi car ils ne sont pas envoyés sur un port standard et il n'y a pas d'autre méthode pratique pour détecter le protocole. Les ports utilisés pour RTP sont négociés par le protocole de canal de contrôle (tel que SIP) précédant l'installation RTP. This example contient un message SIP où la ligne rport = 5060 indique le port UDP utilisé pour RTP (voir ci-dessous).

La détection de RTP nécessite donc l'inspection des paquets de protocole SIP (ou autre protocole de signalisation pour comprendre les ports RTP pour filtrer.

SIP/2.0 200 OK 
Call-ID: [email protected] 
Contact: pel<sip:[email protected]:5060;line=7d36558f31367051>;q=0.500;expires=1200 
CSeq: 6 REGISTER 
From: <sip:[email protected]>;tag=659abf 
P-Associated-URI: <sip:[email protected]> 
To: <sip:[email protected]>;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 
+0

Merci pour la réponse, je vais analyser le fichier .pcap statique afin Comment puis-je commencer avec, est-il une option de filtre direct à la fonction 'pcap_compile' ou dois-je utiliser BPF pour cela.Si BPF alors comment puis-je spécifier le protocole? – psp1

+0

vous passeriez un filtre BPF comme 'port UDP 5060 'pour filtrer le trafic SIP Vous pouvez essayer ceci en utilisant tcpdump -r pour lire depuis votre fichier de capture statique – rupello

Questions connexes