3

SIP メッセージの正確性を確認するために、SIP メッセージをスニッフィングしてデコードできる Python スクリプトが必要です。このスクリプトのベースとして、パケット スニッフィングに python-libpcap ライブラリを使用します。UDP パケットをキャッチして SIP ペイロードを抽出することはできますが、デコードする方法がわかりません。Python には、パケットをデコードするためのライブラリがありますか? dpkt しか見つかりませんでしたが、SIP をデコードできないことがわかりました。そのようなライブラリがない場合、どうすれば手でこれを行うことができますか?

前もって感謝します!

4

3 に答える 3

4

最後に、sharktools (http://www.mit.edu/~armenb/sharktools/) の pyshark を使用してこれを行いました。IP パッケージを盗聴するために、libpcap の代わりに scapy を使用しました。

于 2012-10-03T12:51:32.543 に答える
1

Pythonのツイストフレームワークには、SIP のサポートが含まれています。ただし、RFC 3261 ではなく、RFC 2543 向けに書かれているようです。

dpktライブラリには、いくつかの基本的な SIP サポートがあります

もう 1 つの方法は、ANTLR などのパーサー ジェネレーターを使用して SIP メッセージを解析することです。ANTLR は、Python ベースのパーサーを作成できます。SIP 用の ANTLR 文法が Web 上で利用可能であることは驚くことではありませんが、最初の数分間の検索では見つかりませんでした。

于 2012-08-24T20:03:19.937 に答える
0

あなたのニーズはかなりカスタムのように思えるので、自分で行うことをお勧めします。構文は、 RFC 3261の末尾にある BNF 文法で定義されています。文法は非常に巨大であるため、文法全体ではなく、必要なものだけを検証したい場合があります。

段階的に進めてみてください。すべてを同じ関数で処理しようとすると、巨大で複雑な関数になってしまいます。処理を簡素化するために、各ステップでデータを生成してみてください。たとえば、最初のステップで、パケットの各行を読み取り、ヘッダーとコンテンツのペアを作成できます。これにより、さらに洗練できる、より使いやすいデータ構造が作成されます。

yotommy が言ったように、ANTLR を使用することもできますが、それに慣れていない限り、それは私の選択ではありません。文法は膨大で、ANTLR を使用して表現するのは容易ではありません。

于 2012-08-24T20:33:40.027 に答える