2017-08-28 2 views
1

現在、私は、パケットをキャプチャした後にSIPヘッダーメッセージを解析することにより、ユーザーのログイン情報と内線番号情報を収集するプロジェクトに取り組んでいます。私は現在、これを達成するためにPCAP.netとSIPSorceryライブラリを使用しています。プロジェクトはC#で書かれていますSIPセッショントラッキング

仕組み: PCAP.netのフィルタを使用することで、SIP関連のトラフィックにゾーンインすることができます。パケットがキャプチャされるたびに、イベントが発生し、パケットタイプをチェックします。それがSIPなのか、それともDNSなどのUDP関連のものなのか。これがSIPメッセージの場合、私が興味のある情報を引き出すヘッダを解析する

問題: 一部のSIPエンドポイントは、同じUIDを含む複数の登録パケットを生成します。単一のセッションと、エンドポイントが実際に最終的に登録されたとき(すなわち、SIPサーバから200Kを受信するとき)を追跡することは困難である。私は辞書を使ってCallIDを試してみたのですが、パケットがすでに辞書に入っていればそれがいつ受信されたかを調べました。

質問: はどのように私は私がその特定のセッションのために200OKを受信したとき、それは登録されたストリームが完了している

答えて

0

Call-IDフィールドSIPメッセージ内のに使用されている知っているので、セッションを追跡し続けるんSIPセッションを追跡する。 Call-IDの詳細については、RFC 3261を参照してください。

コールIDは、SIPセッションの一意の識別子として機能します。あなたのケースでは、後続のメッセージを追跡するためにSIP-REGISTERメッセージからCall-IDを検索することができます。

0

SIPエンドポイントは、連絡先アドレスをレコードのアドレスにバインドするためのREGISTER要求を送信します。そのような登録は、Call-IDヘッダフィールドによって識別される。

ので、同じCall-ID値を持つ複数のREGISTER要求が発生する可能性があることに注意してください:すべての登録が期限切れ間隔

  • を持っているので、REGISTERリクエストがあり、エンドポイントが定期的にその登録を更新します

    • 認証のためにチャレンジされ、SIPエンドポイントは認証情報で新しい要求を送信します。
    • 再送信

    さらに、200応答は、エンドポイントが登録されていることを意味するものではありません。登録が有効である期間を知るには、 'expires'ヘッダおよび/または連絡先パラメータをチェックする必要があります。