5

バックグラウンド:

scapyを使用して、送信元/宛先MAC、IPアドレス、およびレイヤー4ポート番号を交換することでパケットを選択的にループバックできるネットワークデバイスをテストしています。layer_2_only、、、layers_2_and_3のスワッピングを選択できますlayers_2_3_and_4。サーバーでscapyを実行し、デバイスにパケットを送信し、返送されたパケットの設定に応じて適切な送信元/宛先フィールドが交換されていることを確認しています。

問題:

srploop()パケットを送信して一致を受信するscapyメソッドは、PINGやARPなどのメッセージタイプに適しています。UDPパケットを送信し、送信元/宛先ポートがループバックデバイスによって反転されない場合、scapyはループバックされたパケットを一致のように処理しないことがわかりました。ループバックデバイスによってポート番号が逆にされると、パケットは一致として検出されます。

質問:

  1. scapyのパケットマッチングロジックをオーバーライドまたは影響を与える方法はありますか?たとえば、レイヤー4でマッチングを無効にできると便利です。私はドキュメントを見ましたが、これが可能であることを示唆するものは何も見つかりませんでした。

  2. scapyでこれを達成する別の方法はありますか?を使用して実験しましsend()sniff()が、その方法を使用して応答をキャプチャすることに成功していません。

4

1 に答える 1

2

質問の2番目の部分では、 Scapyで説明したアプローチを試してみてください。複数のスレッドを使用すると、パケットをスニッフィングできません。

基本的に、別のスレッドでスニファーを実行し、リターントラフィックをキューにフィルターで除外します。キューは、を実行しているメインスレッドからアクセスできますsend()。したがって、送信と受信が同時に進行します(2つのスレッドで)。

唯一の問題は、私の特定のセットアップで、別のスレッドで実行したときにフィルターを適用できないという奇妙な動作にスニファーで遭遇したことです。うまくいけば、あなたはより良い運があります。

更新:スニファーに関するその問題は解決されました(上記のリンク先の私の質問を参照してください)。

お役に立てれば!

于 2013-04-29T17:14:14.730 に答える