2012-04-26 8 views
2

私はScapyで遊んでいて、何か変わったことに気付きました。scapy:スニッフィングされたトラフィックのTTLを修正する正しい方法

私はICMP時間超過エラーメッセージトリガするためにパケットを作成する場合:

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

を私は機能srでそれを送ったら...私はICMPメッセージを取得します。

一方、私が盗聴したパケットを取り出し、そのttlの値を上記のものに変更すると、何も返信されません。

ここで問題は何ですか?私は実際のトラフィックではなくダミートラフィックを使ってこれを体験できると思った!私は他のTTL値でも試してみましたが、役に立たなかったのです。

+0

リッキー、その第三ホップルータは、TTL時間をドロップする可能性がある静かにパケットを超え、TTL 4と2を試してみてくださいまた、3つのホップアウト時ミッシングリンクを示すscapyであなたのtracerouteのですか? – dc5553

+0

ええ、私は1から20までの値を試しましたが、私はまだICMPメッセージを返しません。私は本当に何が起こっているのか分からない。 –

+0

-i 3でpingを試してみて、scapyの外に何かがあるかどうかを調べるだけですか? – dc5553

答えて

1

ttl値を変更するとチェックサムが正しくないため、パケットがドロップされていました。

del(mypacket.getlayer(IP).chksum) 
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) 
関連する問題