OSのネットワークスタックにフックして、通過するパケットをスニッフィングし、関心のあるパケットを編集できるユーザースペースアプリケーションを作成しようとしています。
多くのグーグルの後、(どのプラットフォームでも)そうするための最も簡単な(しかしかなり堅牢な)方法はLinuxのlibnetfilter_queue
プロジェクトであるように私には思えます。ただし、限られた公式ドキュメント以外に、プロジェクトの妥当なドキュメントを見つけるのに苦労しています。その主な機能(最初のリンクで述べられているように)
- カーネルnfnetlink_queueサブシステムからキューに入れられたパケットを受信する
- 評決の発行および/または変更されたパケットのカーネルnfnetlink_queueサブシステムへの再注入
強調は私自身のものです。私はこれについてどのくらい正確に意味しますか?提供されているサンプルコードを変更しようとしましたが、何かを誤解している可能性があります。コードはNFQNL_COPY_PACKET
モードで動作しているので、パケット全体を受信していますが、「コピー」セマンティクスを考えると、予想どおり、パケットへの変更は自分のアプリケーションに制限されているようです。
どういうわけか利用するつもりなのですがNF_QUEUE
、なかなか手に入れていません。ポインタはありますか?
(これを行うためのより単純なメカニズムがあり、それがクロスプラットフォームでもある場合は、それについて聞いてみたいです!)