2012-04-29 16 views
1

こんにちは私は、scapyが返すタプルのように見える要素にアクセスしようとするのに役立つ必要があります。コードは以下の通りです。Pythonを使用してScapyから変数を取得する

ans,unans=sr(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0) 
ans.summary(lambda (s,r): r.sprintf("%IP.src%")) 

私がScapyを入力し、これらのコマンドを手動で入力すると、単一のIPアドレスが返されます。しかし私はPythonスクリプトの中から実行しており、そのIPアドレスを変数として保存する必要があります。これは愚かな質問かもしれませんが、私はScapyを学んでいますが、scapyを使って変数としてこのIPアドレスをどのように保存しますか?私は以下のようなものを達成したいと思っています。

#!/usr/bin/python 
from scapy.all import * 
ans,unans=sr(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0) 
SourceIP = ans.summary(lambda (s,r): r.sprintf("%IP.src%")) 
+0

なぜあなたは仕事をしませんでしたか?あなたは何の間違いを犯しましたか、あるいはあなたが望んでいなかった結果を得ましたか? –

答えて

3

レイヤの値が必要な場合は、getlayerメソッドを使用します。したがって、次のように変更してください。

ans = sr1(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0) 
address = ans.getlayer(IP).src 

trueまたはfalseを返すレイヤーが存在する場合は、別の方法もあります。ここにその例があります。

if ans.haslayer(IP): 
    print "Packet has the layer IP" 
+0

調整されたのはインタラクティブなウィンドウでのみ謝った.. – dc5553

+1

あなたの助けを借りてくれてありがとうございます – Jamesla