アプリケーションを介してすべてのネットワークトラフィック(HTTPだけでなく)をルーティングするアプリケーションを構築したいと思います。基本的に、私が必要としているのは、アプリケーションに与えられるすべてのトラフィックです(実際のターゲットに到達することはなく、アプリケーションがこれを処理する必要があります)。これはサーバーに転送されます。同じことが入力にも当てはまりますが、逆になります(サーバー->アプリケーション->回答が必要なプログラム)。アプリケーションの作成を容易にするライブラリ(または同様のもの)はありますか?PythonやJavaで使えるものを探していますが、本当に必要な場合は別の言語を学ぶことができます。
4 に答える
使用したいのはパケットキャプチャライブラリです。PythonまたはJavaでepcapまたはその実装またはバインディングを使用できます。
ただし、これらのようなものは通常、理想的にはCを使用して低レベルで実装されます。これがチュートリアルチュートリアルです。
編集:あなたのコメントに照らして、あなたは間違いなくnetfilterフックを見てみたいです
あなたがそれにいる間、あなたはまたnetfilterフックを見たいかもしれません
Jpcapをご覧ください。
TCPトラフィックのみをルーティングする場合は、実際にはスレッドとソケットを使用するのは簡単です。到達したいサーバーごとに異なるポートでリッスンする必要があります。JavaまたはPythonのいずれかで、リッスンするすべてのポートに対して「ソケット」を作成する必要があります。
サーバーへの新しい接続を作成し、その接続を処理するために2つの新しいスレッドを作成する新しい接続ごとに、1つのスレッドがクライアントからすべてを読み取り、サーバーに送信します。もう1つは、サーバーからすべてを読み取り、それをクライアントに送信することです。接続のいずれかの端が接続を閉じると、もう一方の端を閉じて両方のスレッドを終了します。
Linuxでこれを行う場合は、TUN / TAPデバイスの使用を検討する必要があります。これは、カスタム処理のためにネットワークトラフィックを傍受するための非常に便利なツールです。慣れていない場合の基本的なチュートリアルは次の とおりですhttp://backreference.org/2010/03/26/tuntap-interface-tutorial/