21

PlanetLabノード (Fedora 12 を実行)でScapyを使用することに成功した人はいますか?

安全な raw ソケットの制限については認識していますが、設定するだけで Scapy 経由でパケットを送信できるようですconf.L3socket=L3RawSocket。パケットの受信に関しては、Scapy が動かなかったのでtcpdumpを使っています。

TCPICMPは動作しているようです:

  • ICMP エコー要求はエコー応答を返します
  • TTL が低い ICMP エコー要求で、時間超過メッセージが返される
  • TCP SYN パケットが TCP RST パケットを返す
  • TTL が低い TCP パケットは、時間超過メッセージを返します

UDPは次のことを行いません。

  • 閉じられたポートへの UDP パケットは、ICMP ポート到達不能メッセージをトリガーしますが、このメッセージは私のスライバーには戻りません。Tcpdump は UDP パケットのみを認識します。
  • パスに沿って期限切れになる UDP パケットについても同じことが言えます。

これらの ICMP パケットを受信するために設定する追加のパラメータはありますか?

4

1 に答える 1

1

これが役立つかどうかはわかりませんが、私の経験では、scapy でパケットを受信するには、sr または sr1 メソッドを使用する必要があります。

sr1(IP(dst="192.168.1.8")/UDP(dport=60112))

送信開始: ...1 パケットの送信が終了しました。4 パケット受信、1 応答、残り 0 パケット

<IP  version=4L ihl=5L tos=0xc0 len=56 id=47804 flags= frag=0L ttl=64 proto=icmp chksum=0x6274 src=192.168.1.8 dst=192.168.1.2 options='' |<ICMP  type=dest-unreach code=3 chksum=0x59eb unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=1 flags= frag=0L ttl=64 proto=udp chksum=0x1dfc src=192.168.1.2 dst=192.168.1.8 options='' |<UDPerror  sport=domain dport=60112 len=8 chksum=0xb803 |>>>>

sr() 関数は、パケットを送信し、応答を受信するためのものです。この関数は、いくつかのパケットと回答、および未回答のパケットを返します。関数 sr1() は、送信されたパケット (またはパケット セット) に応答した 1 つのパケットのみを返すバリアントです。-ソース

于 2013-10-25T16:05:26.900 に答える