2012-04-29 67 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

爲什麼你沒有工作?你得到了什麼錯誤,或者你得到了什麼結果,你不想要? – 2012-04-29 10:15:04

回答

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 2012-04-29 18:45:53

+1

完美的作品感謝您的幫助 – Jamesla 2012-04-30 07:37:41