基于Python的网络嗅探器(scapy不够好?)

时间:2015-03-12 15:05:26

标签: python tcp-ip scapy packet-sniffers

我正在寻找具体的任务: 从数据包中获取有效负载/数据 - >附加到文件...但是。我想特别按照flags / ICMP类型/ etc来跟踪数据包......所以我想说我想特意把#34; echo"数据包而不是其余的。

我的(无效)代码如下:

from scapy.all import *
f= open('filecaptured', 'a+')
def pkt_diam(pkt):
    raw = pkt.getlayer(Raw).load
    print raw
    # pkt.show()
    # fo = open("payload", "wb")        
    f.write(raw);  
sniff (filter="icmp" , store=0, prn=pkt_diam, timeout = 120 )

这里的问题是我无法找到专门嗅探" type = echo request"我可以使用的唯一参数是' protocol'和主持人或'而不是主持人127.0.0.1'。

有解决方法吗?

我认为对于这个我需要使用ctypes和libpcap.so但是我不确定...(我没有找到任何[其他]用于python的库 - 嗅探)

2 个答案:

答案 0 :(得分:1)

我现在没有安装scapy,但是如果你只是在你的回调函数pkt_diam中检查类型echo-r​​eply怎么办:

if not "echo-reply" in pkt.show():
    return

答案 1 :(得分:1)

尝试过滤器=" icmp [0] = 8"用于在捕获过程中进行过滤或

if pkt[ICMP].type==8:

在回调函数中。