2016-04-28 93 views
0

我試圖比較嗅探數據包。我必須將src地址與以前的地址進行比較,並且與dst地址相同。 這是我到目前爲止的代碼:在Python中比較數據包

#!/usr/bin/evn python 
from scapy.all import * 

pkt = sniff(filter="ip",timeout=5) 
for p in pkt: 
    try: 
     if IP in pkt: 
      ip_src=pkt[IP].src 
      ip_dst=pkt[IP].dst 
       if (pkt[IP].src[p]!=pkt[IP].src[p+1]) 
        packet=pkt[IP].src 
        return packet 
        print "packets not equal" 

但這似乎並不正確。誰能幫我?

+0

那麼這是不是一個完整的有效的Python程序.... –

回答

0

所以你在這裏有一些問題,主要是你的Python語法。
1)「如果」在Python語句如下所示:
if 1 == 1: print "Hello World!"

2)請注意,您嘗試使用return後使用print命令。這將不起作用,因爲一旦你使用了返回,該功能將完成運行。例如:
def test(): return "Hello world" #Will run and exit the function print "Hello wolrd2!" #Will not run since the function was finished on the line above

後你有固定的這些問題,我建議你看一下你的代碼,並將其固定在正確的Python語法。

+0

我仍然有一個問題,如果(pkt [IP] .src [p]!= pkt [IP] .src [p + 1]) ''給我這個錯誤:'IndentationError:unexpected indent' –

+0

如果你看看你的代碼,注意你的if語句前有一個縮進(4個空格)。該錯誤表明這些縮進不應該在那裏。刪除它,錯誤將會消失。 (讓你的if語句與上面的行對齊) –