2

Scapy をいじっていて、何か変なことに気づきました。

ICMP 時間超過エラー メッセージをトリガーするためにパケットを作成すると、次のようになります。

myPacket = IP(dst="www.google.com", ttl=3)/TCP()

...関数で送信すると、ICMPメッセージを取得しますsr

一方、盗聴した送信パケットを取得し、その ttl 値を上記と同じ値に変更すると、まったく応答がありません。

ここで何が問題なのですか?実際の交通ではなく、ダミーの交通を使ってこれを体験できると思いました!他の TTL 値でも試してみましたが、役に立ちませんでした。

4

2 に答える 2

1

わかりました。ttl 値を変更すると、チェックサムが正しくなくなったため、パケットがドロップされていました。値を削除して、チェックサムを強制的に再計算する必要がありました。

del(mypacket.getlayer(IP).chksum) 
于 2012-04-27T10:19:17.630 に答える
1

もう 1 つのオプションは、sendp() 関数を使用することです。Scapy は IP と TCP のチェックサムを自動的に計算します。

myPacket = IP(dst="www.google.com", ttl=3)/TCP()
sendp(myPacket)

def dissect(pck):
    if pck.haslayer("ICMP"): # Filter out all but ICMP packets.  You could do additional filtering
        pck.show()           # Display response packets

sniff(iface="eth0", prn=lambda x:dissect(x), store=0)
于 2012-05-16T14:39:27.100 に答える