私のコンピュータから送信されたTCP SYNパケットをC++プログラムで傍受する最も簡単な方法を見つけることを試みています。私が知っているオプションのカップルがあります。 1つはすべてのトラフィックを監視し、残りのものを何もしないSYNパケットで選択的に処理するだけです。私が遭遇したもう一つの選択肢は、SYNパケットを私のプログラムに転送するパケットフィルタリングユーティリティを使うことでした。誰かが私に同じものにnetfilterを使うように勧めました。LinuxのC++プログラムへのTCP SYNパケットの傍受/リルート
他のオプションがあるかどうか、またはnetfilterを調べる必要があるのだろうかと思っていました。また、netfilterを使ってこれを行う方法については、参考にしてください。
編集:私は戻って、ネットワークへ
編集し、それを再注入する前に(異なる宛先、変更先のポートなどに再ルーティング)SYNパケットを傍受したいし、それを修正する必要があるかもしれません:私は使用してこれを行うことができましたiptablesとlibnetfilter_queueの組み合わせ。私はipfilterを使用してすべてのTCP SYNパケットを特定のキューにリダイレクトしました(これは単純なコマンドを使用していました)
Cプログラムでlibnetfilter_queue APIを使用してキュー内のパケットにアクセスし、それらを分析してネットワーク。
実際に経路を変更したいかどうかを明確にしてください - 件名を教えてくださいが、質問に言及しないことをお勧めします – Alnitak
私はSYNパケットを傍受したいので、変更する必要があります送信先ポートなど)に転送することができます。 –
Rawソケットを使用してパケットを注入することもできます。 – Anonymous