0

私は個人的なプロジェクトの一環として小さなスニファーを書いています。私は使用していますNet::Pcap(本当に本当に素晴らしいツールです)。

パケット処理ループでは、Net::Frameすべてのヘッダーを解凍してデータを取得するために優れた機能を使用しています。これはそれほど効率的ではないかもしれないと心配しています(Net::Frame素晴らしいですが、このプロジェクトに必要な以上のようです)。

また、一部のDebianシステムでは、libdumbnetを手動でコンパイルする必要があったことも嫌いです(公式のaptリポジトリで提供されているパッケージは機能してNet-Libdnet-0.92いないようで、気に入らなかった)。

私が欲しいのは、TCPセグメント内のペイロードを取得することです。代替手段はありますか?ありがとうございました。

PSパケットを受け取ってパターンを検索しただけでは、本当に悪いことでしょうか(「thedailywtf.comに値する」を読んでください)。

4

1 に答える 1

1

私は最近、CでPCAPダンプファイルアンパッカーを作成し、その後、代わりにオープンソースライブラリを使用したいと思っていました(それらが存在し、非常に使いやすいことに気付いたとき)。バイナリファイル形式なので、PerlよりもCで行う方がおそらく簡単だと言わざるを得ませんが、Perlの熱狂的なファンすべてに後押しされることは間違いありません。

私が言うことは、既存のコードを使用することは、それを自分でコーディングするよりも全体的に速いということですが、本当に必要な場合は、ファイル形式はオンラインで無料で利用でき、非常に簡単です。

パターンの検索に関しては、ほぼ確実に機能しません。これはバイナリファイル形式であり、パケットはフラグメント化および/または複製される可能性があるため、メッセージの開始位置と終了位置を知る唯一の信頼できる方法は、ヘッダーの解凍、パケットフラグの確認、コンテンツ長フィールドの読み取りなどです。パターン検索を実行すると、90%の確率で機能する可能性がありますが、ある時点で、コードを変更する必要があることを意味するパケットキャプチャログが見つかります。そしてしばらくして、別の変更を意味する別のパケットを見つけます。

于 2010-12-13T16:59:58.997 に答える