【问题标题】:Sniffing packets on localhost with Scapy使用 Scapy 在 localhost 上嗅探数据包
【发布时间】:2015-04-24 10:25:31
【问题描述】:

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

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

p = sniff(filter = 'port 50420')

但是,尽管数据正确流动,但没有捕获任何数据包。我已经验证嗅探适用于不使用 localhost 的其他流量。如果可能的话,我如何使用 Scapy 嗅探这个 localhost 流量?

【问题讨论】:

    标签: scapy packet-sniffers


    【解决方案1】:

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

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

    并写myFunction:

    def myFunction(pkt):
        print "Packet!"
    

    【讨论】:

      【解决方案2】:

      您可能需要指定接口。在 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”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-28
        • 2013-09-11
        • 2015-04-02
        • 1970-01-01
        • 2021-06-03
        • 2015-04-09
        • 1970-01-01
        相关资源
        最近更新 更多