2016-04-28 49 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语句与上面的行对齐) –