8

スタンドアロンTCPスタックを実装するPythonライブラリはありますか?

ソケットを介してパケットのストリームを受信して​​いるため、通常のpythonソケットライブラリを使用できません(これらはこのソケットを介してトンネリングされています)。特定のポート宛てのTCPSYNパケットを受信したら、接続を受け入れ(syn-ackを送信)、もう一方の端から送信されたデータを取得します(適切にackします)。

I was hoping there was some sort of TCP stack already written which I could utilize. Any ideas? I've used lwip in the past for a C project -- something along those lines in python would be perfect.

4

5 に答える 5

7

作業しているプラ​​ットフォームはわかりませんが、Linuxで作業している場合は、tun / tapインターフェイスを開いて、IPパケットを実際のネットワークインターフェイスとしてカーネルに戻し、カーネルがすべてを実行できるようにします。トリッキーなTCPのもの。

これが(たとえば)OpenVPNの仕組みです。UDPまたはTCPを介して生のIPパケットを受信し、tun/tapインターフェイスを介してカーネルにトンネリングします。

WindowsへのOpenVPNポート用に開発されたWindows用のtun/tapインターフェースもあると思います。

于 2009-10-17T10:19:10.560 に答える
2

Scapy をざっと見ると、これらの低レベルの状況を処理できるように見えます。私はそれを自分で使用していないので、あなたが説明したことを確認できません。ドキュメントをざっと見ただけです。

于 2009-10-17T01:01:51.267 に答える
0

これが Python に直接関係していないことはわかっていますが、大量のネットワーク処理を行う場合は、Python の代わりに Erlang を検討する必要があります。本当にただの提案です... Twisted でこれを行うことはいつでもできます... 冒険好きなら (そしてあなたの味方になる時間がたくさんあります) ;-)

于 2009-10-17T00:53:09.533 に答える
0

ソケットの反対側のソフトウェアにすでにコミットしている場合、つまり TCP パケットを転送している場合は、おそらく TCPWatch が SYN パケットを取得する方法を示します。SCAPY は、必要なパケットを正確に送信するには確かに優れていますが、プロキシとして機能するかどうかはわかりません。

http://hathawaymix.org/Software/TCPWatch

ただし、送信側にコミットしていない場合は、Twisted Conch または Paramiko を使用して SSH 転送を行うことを検討してください。暗号化が必要ない場合でも、CPU への影響が少ないフグでこれらを使用できます。SSH は標準化されているため、どの SSH ソフトウェアも動作するはずなので、これは相手側で Conch が必要だという意味ではありません。SSH の世界では、これは通常「ポート フォワーディング」と呼ばれ、人々は SSH ターミナル クライアントを使用して SSH サーバーにログインし、ポート フォワーディング トンネルを設定します。Conch と Paramiko を使用すると、これを Python アプリケーションに組み込むことができるため、SSH ターミナル クライアントは必要ありません。

于 2009-10-17T16:47:41.383 に答える
0

You might be able to use the ctypes module to import lwip and use it again.

于 2009-10-17T00:58:34.037 に答える