Question

J'utilise SharpPCap qui est construit sur WinPCap pour capturer le trafic UDP. Mon objectif final est de capturer les données audio de et enregistrer ces H323 conversations téléphoniques sous forme de fichiers WAV. Mais première chose est d'abord - je besoin de savoir ce que mes paquets UDP traversent la carte réseau.

SharpPCap fournit une classe UdpPacket qui me donne accès à la PayloadData du message. Mais je ne suis pas sûr que faire avec ces données. Il est un tableau d'octets [] et je ne sais pas comment s'y prendre pour déterminer si elle est un paquet RTP ou RTCP.

J'ai googlé ce sujet, mais il n'y a pas grand-chose là-bas. Toute aide est appréciée.

Était-ce utile?

La solution

Regardez les définitions pour les paquets RTP et RTCP dans RFC 3550 :

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X|  CC   |M|     PT      |       sequence number         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           synchronization source (SSRC) identifier            |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|            contributing source (CSRC) identifiers             |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Je ne reproduirai pas la légende de ce qui précède - il est assez long - mais jeter un oeil à Section 5.1 .

Avec cela en main, vous verrez qu'il n'y a pas beaucoup que vous pouvez faire pour déterminer si a paquet contient RTP / RTCP. Le meilleur de tous serait de sniff, comme d'autres ont suggéré, les médias négociation flux. Deuxième mieux serait une certaine correspondance de motif sort've sur une séquence de paquets: les deux premiers bits seront 10, suivi par les deux bits suivants étant constant, suivi par les bits 9 à 15 étant constante, puis 16 -> 31 incrémentation, et ainsi de suite.

Autres conseils

Je regardais les détecteurs de paquets dans Wireshark, qui peut décoder les protocoles les plus courants disponibles.

Je crois que vous avez besoin de regarder les paquets SIP qui viennent avant les paquets RTP.

Il est une discussion sur cette question sur le site Pcap.Net .

Si communucations sont faites sur RTSP, jetez un coup d'oeil au port udp qui est négocié sur SETUP.

le port udp vous dira si elle est RTP ou RTCP (également intéressant de noter que la RTP se fait habituellement sur même les numéros de port et RTCP impair).

Enfin, si vous communiquez via RTSP, vous pouvez prendre la liste des numéros de charge utile à partir du fichier SDP de la DESCRIBE puis vérifier le type de charge utile dans l'en-tête RTP pour dire le codec dont vous avez besoin pour décoder la charge utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top