1

1 つの pcap ファイル (~90M) があり、そのファイルを再生したいと考えています。scapy に出会い、pcap ファイルを読み取って再生する方法を提供します。パケットを再生するために次の2つの方法を試しました

sendp(rdpcap(<filename>)

pkts = PcapReader(<filename>);
for pkt in pkts:
     sendp(pkt)

最初の 1 つのゲームのメモリ エラーで、python プロセスのメモリ消費量が 3 ギガに達し、最終的には死亡しました。しかし、2番目のオプションは、ファイル全体をメモリに読み取らなかったため、うまく機能しました。次の3つの質問があります

  1. 90M の pcap ファイルは scapy を再生するには大きすぎますか?

  2. tcpdump/wireshark を使用すると、すべてのパケットにタイムスタンプが関連付けられます。パケット 1 が時間 T に到着し、パケット 2 が時間 T+10 に到着したと仮定すると、scapy は同様の方法でパケットを再生します。最初のパケットは時間 T に、2 番目のパケットは T+10 に発生しますか? または、ループで送信し続けるだけです。後で PcapReader の場合だと思います。

  3. 上記の質問に対する答えが「いいえ」の場合 (パケット間の到着時間を考慮せずにループで再生するだけです)、この仕事を行うことができる他の Python ライブラリはありますか? Pythonでさえ、私にとって制約ではありません。

4

2 に答える 2

1

あなたの最初の質問に答えるために、まあ、あなたは自分で答えたようですね! 代わりに、40 ~ 50 MB の別の pcap ファイルで最初のオプションを再度実行してみて、エラーが発生するかどうかを確認してください。そうすれば、少なくとも、システムが Scapy と組み合わせて処理するにはファイルが大きすぎることを確認できます (Scapy は一度にいくつかのパケットを処理するように構築されているため、Scapy がアルゴリズムを実行する方法を処理するのに十分な RAM がシステムにありません。 90MB の pcap ファイル) またはそれがコード内の何かである場合。

2 番目の質問に答えるために、私が過去数週間にわたって Scapy で行ってきた読書に基づいて、これはイエスであると強く信じています。ただし、この検証をバックアップするための頭のてっぺんからの情報源は知りません。

忍者の編集 - 別の StackOverflow の質問でこれを見ました - Scapy の各パケットにタイムスタンプを指定しますか?

これは単一のパケットの場合ですが、Scapy 内ですべてのパケットにタイムスタンプが付けられている場合、読み込んだ大きな pcap ファイル内のすべてのパケットで同じになると思います。このようにして、パケットを再生すると、同じ順序。

この回答では、多くの知識に基づいた推測が行われていますが、お役に立てば幸いです!

于 2013-04-28T03:50:11.607 に答える