2017-09-21 7 views
1

Scapyで第2層のブロードキャストアドレスを持つデフォルトゲートウェイにエコー要求を送信しようとしています。2層ブロードキャストアドレスのデフォルトゲートウェイにecho-r​​equestを送信する

私はこのコードを書いた:

packet = Ether(dst='FF:FF:FF:FF:FF:FF')/IP(dst='192.168.1.1')/ICMP() 
sendp(packet) 

をしかし、私は、ネットワーク内のパケットを送信するプロセスを理解しても応答が

を返されていない、フレームは、IPアドレスため、スイッチに行っていたはずです宛先が同じネットワーク内にある場合、スイッチはブロードキャストアドレスを認識しているため、接続先のすべてのユーザに送信していたはずです。

この理論には何が問題なのですか?

btw、私はwiresharkを使用してトラフィックを盗聴していましたが、捕捉されたping要求を見ることができましたが、これはおそらくこれがネットワーク上の問題であり、ソフトウェアではないことを意味するその回答に対する応答を見つけることができませんでした。

+0

スイッチがレイヤ2アドレスだけを使用して配布を処理する(単純なブリッジとして動作する)という前提が正しいかどうかはわかりません。私はそれが決定するためにIPを使用すると期待... –

答えて

0

最初に、潜在的な応答を見ることを妨げる2つの「Scapy関連」ポイントがあります。

  • あなたがパケットを送信し、(無応答が受信されない場合やNone)答えを取得したい場合は、srp1()を使用しています。 sendp()はパケットを送信しますが、応答を待つことはありません。レイヤ2つのコマンド(*p()機能)を使用する場合

  • 、それはあなたのデフォルトインターフェイス(conf.iface)ではないとき、iface=パラメータとして、使用するインターフェイスを指定することを忘れないでください。

はその後、あなたはどんな答えを得ることはありませんことを説明できる「ネットワーク」理由があります:あなたが送信しているパケットは、レイヤ2の「放送する」、および「私をユニキャストに」である(あなたから一部のIPスタック(少なくともOpenBSD)はそのようなパケットを破棄し、他のもの(少なくともLinux)はそれを受け入れます。

srp1(Ether()/IP(dst='192.168.1.1')/ICMP())、または(ルーティングテーブルが192.168.1.1に達するのが正しいと仮定した場合、Scapyがレイヤ2を処理させるようにして、ゲートウェイアドレスにユニキャストパケットを送信し、何が起こるかを確認できます。sr1(IP(dst='192.168.1.1')/ICMP()))。

関連する問題