11

I am using SharpPCap which is built on WinPCap to capture UDP traffic. My end goal is to capture the audio data from H.323 and save those phone conversations as WAV files. But first thing is first - I need to figure out what my UDP packets are crossing the NIC.

SharpPCap provides a UdpPacket class that gives me access to the PayloadData of the message. But I am unsure what do with this data. It's a Byte[] array and I don't know how to go about determining if it's an RTP or RTCP packet.

I've Googled this topic but there isn't much out there. Any help is appreciated.

4

4 に答える 4

5

RFC 3550の RTP および RTCP パケットの定義を見てください。

 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             |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

上記のすべての凡例を再現することはしませんが (かなり長いので)、Section 5.1を見てください。

これがあれば、パケットに RTP/RTCP が含まれているかどうかを判断するためにできることはあまりないことがわかります。何よりも、他の投稿者が示唆しているように、メディア ストリームのネゴシエーションを盗聴することをお勧めします。次善の方法は、一連のパケットに対するある種のパターン マッチングです。最初の 2 ビットは 10 で、次の 2 ビットは定数であり、ビット 9 から 15 は定数であり、16 -> 31 ずつ増加します。すぐ。

于 2010-07-11T08:04:02.777 に答える
2

利用可能な最も一般的なプロトコルをデコードできるWiresharkのパケット検出器を調べます。

于 2010-05-26T19:40:02.717 に答える
0

RTP パケットの前に来る SIP パケットを確認する必要があると思います。

この問題については、Pcap.Net サイト で議論されています

于 2010-05-28T21:14:54.723 に答える