特定のポートを介してトラフィック (インとアウト) を監視するソリューションを見つけようとしています。パケットをキャプチャしたり、他のことをしたりする必要はありません。このポートが行うことは、10 分ごとにこのポートとの間で送受信されるメッセージがあることを確認するためのトラフィック リスナーになることです。常にバックグラウンドで (デーモンのように) 実行されている必要があり、パフォーマンスに大きな影響を与えることはありません。私の調査に基づいて、1 つの選択肢は、既存のツールを使用してそれを行うことです。Wireshark など、トラフィックを監視またはスニッフィングするためのツールがたくさんあります。まあ、それらのほとんどは、ポートではなくインターフェイスを通過するトラフィックを監視しているようです。または、デーモンとして実行できません。これを行うプログラムを作成する別の選択肢。SharpPcap良い選択のように思えますが、パケットをキャプチャして分析し、そのようなトラフィックが存在するかどうかを知る必要があります。誰かが私が何をすべきかを提案できますか?
2 に答える
SharpPcapはWiresharkと同じ方法でパケットキャプチャを処理するため、SharpPcapでもwiresharkと同じ方法で、キャプチャされるパケットを特定のポートに制限するようにフィルタを設定できます。ただし、SharpPcapはwiresharkよりもはるかに軽量なオプションになります。
SharpPcapソースツリーをダウンロードして、Example05.SetFilterを確認します。
結果を絞り込んで、表示したいパケットのみをキャプチャするには、いくつかのフィルタを使用する必要があります。
Pcapは、それを使用するすべてのアプリケーションで共通の言語を使用し、設定するフィルターを指定します。winpcap(windows)またはlibpcap(* nix)を使用するキャプチャプログラムには、sharppcap、wireshark、pcap.net、winpcap、libpcap、tcpdumpなどが含まれます。pcapフィルターの使用方法に関する優れたリソースについては、このリンクを参照してください。
必要なフィルターは次のとおりです。
- エーテルホストehost
- ポートポート
ここで、ehostはパケットを送受信するコンピューターのMACアドレスであり、portは監視するポートです。したがって、完全なフィルター文字列は次のようになります。
SetFilter("ether host ff:ff:ff:ff:ff:ff and port 60");
ここでのMACとポートは説明のみを目的としており、特定の設定に関連する値で変更することは明らかです。
これは、SetFilterの例で使用され、パケットがキャプチャされるたびに、パケットがキャプチャされた時刻を含む情報の行をコマンドラインに出力し、フィルタの場合の基準を満たします。
ヘッダーやパケットのペイロードからの情報など、パケットに関するより詳細な情報が必要な場合は、着信する生のパケットを解析する必要があります。これを行う方法に関するヒントが必要な場合は、sourceforgeプロジェクトのフォーラムで助けを求めてください。プロジェクト開発者は非常に積極的であり、常に喜んで支援します。
ツールがパフォーマンスに与える影響を制限する最善の方法は、ETW (Event Tracing for Windows) リアルタイム コンシューマー (つまり、ETW トレースをアクティブにして、ファイルに保存する代わりにすぐに読み取るツール) を使用することです。この MSDN サンプルは、C# を使用してこれを行う方法を確認するのに最適な方法であり、開始するためのコードがいくつか含まれています。