私はPythonでプラットフォームを作成しています(プラットフォームはLinuxです)。タスクの1つはライブTCPストリームをキャプチャし、各行に機能を適用することです。現在、私はこれが(の/ etc/sudoersファイルに適切なエントリで)非常によく動作しますPythonで純粋にtcpflow機能(tcpストリームに従う)を達成する方法
import subprocess
proc = subprocess.Popen(['sudo','tcpflow', '-C', '-i', interface, '-p', 'src', 'host', ip],stdout=subprocess.PIPE)
for line in iter(proc.stdout.readline,''):
do_something(line)
を使用していますが、私は外部プログラムを呼び出さないようしたいと思います。
これまでのところ、私は以下のような可能性に見てきた:
flowgrep:ちょうど私が必要なもののように見えるのPythonツール:しかし、それはかなり7歳と思われる、内部pynids を使用しています多くは放棄された。私のgentooシステムにはpynidsパッケージ はありません。それ以上の調整をせずにコンパイルできなかったlibnids のパッチバージョンが同梱されています。
scapy:これは私はTCPストリーム 再構築がサポートされているかどうかはわからないのpythonのパッケージ操作プログラム/ライブラリ、 です。
pypcapまたはpylibpcapをlibpcapのラッパーとして使用します。ここでも、libpcapはパケット のキャプチャであり、ここでは 〜this questionに従ったストリーム再アセンブリが必要です。
私は深く、これらのライブラリのいずれかに飛び込む前に、私は多分誰か は、作業コードスニペットを持っているかどうかを知りたいと思います(これはかなり一般的な問題のように思えます)。 誰かが適切な方法について助言を与えることができれば、私はまた感謝しています。
おかげ
リンクありがとうございます。私はpynidsのこの新しいvesionを完全に見逃しました、私はこのバージョンをコンパイルすることができました。しかし、最初のテストでは、libnidsでは、コールバック関数の働きにより、新しく確立されたtcp接続をキャプチャすることしかできないことを示しています(私は進行中のストリームをキャプチャする必要があります)。さて、これはこの質問の範囲外です... – PiQuer