3

Python を使用して、TCP ストリーム ソケットから完全な (生の) IP フレームを読み取る必要があります。基本的に、すべてのヘッダー情報を含め、物理回線から出てきたかのように、変更されていないフレームが必要です。

私は Python で生のソケットを調べていましたが、いくつかの問題に遭遇しました。独自のパケットを作成する必要はありません。単純に、それらを逐語的に読み取って転送する必要があります。

では、既存の TCP ソケット (Python) から IP フレーム全体 (ヘッダーを含む) を読み取るにはどうすればよいでしょうか?

できれば、標準ライブラリのみを使用したいと思います。また、私は Linux ホストを使用しています。

ありがとう!

4

3 に答える 3

3

標準ライブラリの一部ではないScapyを使用してもかまわず、超高速が必須ではない場合は、そのsniff機能を使用できます。コールバックがかかります。何かのようなもの:

pkts_rxd = []
def process_and_send(pkt):
    pkts_rxd.append(pkt)
    sendp(pkt, 'eth1')
sniff(prn=process_and_send, iface='eth0', count=100)

スニフを別のスレッドまたはプロセスで実行しcount=0、受信したパケットを永久に実行したい場合は、キューに貼り付けることができます。str(pkt)をキューに入れていることを確認してください。sにscapyパケットを置くと、奇妙なことが起こるのを見てきましたmultiprocessing.Queue

DebianとUbuntuはどちらもaptリポジトリにScapyを持っています。rpmディストリビューションについてはわかりません。ただし、ソースからインストールするのは非常に簡単です./setup.py install

于 2011-03-23T19:27:37.580 に答える
0

scapyを試してみてください。

于 2011-03-23T19:23:58.447 に答える
0

多分pylibpcapがそれを行うことができます。

于 2011-03-23T19:24:37.230 に答える