使用Scapy在localhost上嗅探数据包

时间:2015-02-23 06:25:32

标签: scapy packet-sniffers

我正在学习如何使用scapy来嗅探数据包。我已在端口50420上的localhost上设置了一个简单的echo服务器。

然后我在终端中输入以下行,以便在我通过它发送流量时嗅探该端口上的数据包:

p = sniff(filter = 'port 50420')

但是,尽管数据正确流动,但没有捕获数据包。我已经验证了嗅探适用于不使用localhost的其他流量。如果可能的话,我怎样才能使用Scapy来嗅探这个本地主机流量?

2 个答案:

答案 0 :(得分:2)

通过该线路,您正在嗅探端口50420上的流量,但您应该做更多的事情。你应该在嗅探数据包时添加一个跳转功能

sniff(filter="port 50420",prn=myFunction)

写下myFunction:

def myFunction(pkt):
    print "Packet!"

答案 1 :(得分:0)

您可能需要指定接口。在Linux中,

    sniff(filter="port 50420",iface="lo")

当然要使用数据包,您将需要使用“ prn”选项指定一个回调函数(如其他响应中所述),或者可以将数据包保存到列表中以供以后使用,例如

    packet_list = sniff(filter="port 50420",iface="lo")
    first_packet = packet_list[0]

为了更加确定,您可以将过滤器设置为“端口50420和主机127.0.0.1”之类的内容

相关问题