用python进行网络嗅探

用python进行网络嗅探,python,networking,network-programming,sniffing,Python,Networking,Network Programming,Sniffing,我将为大学建立一个嗅探软件。我有一些想法,但想多听听。我们的想法是在防火墙的前端使用被动点击,这样就可以获取所有数据 我知道C速度更快,但我想用python来实现,有没有像库这样的好主意 参考文献: 使用。它提供了一个到libpcap的接口,libpcap是linux上数据包嗅探的事实标准。要解析数据包,您可能需要使用该库,因为它已经包含TCP数据包的解析器 下面是一个小示例程序: import pcap from construct.protocols.ipstack import i

我将为大学建立一个嗅探软件。我有一些想法,但想多听听。我们的想法是在防火墙的前端使用被动点击,这样就可以获取所有数据

我知道C速度更快,但我想用python来实现,有没有像库这样的好主意

参考文献:

    • 使用。它提供了一个到libpcap的接口,libpcap是linux上数据包嗅探的事实标准。要解析数据包,您可能需要使用该库,因为它已经包含TCP数据包的解析器

      下面是一个小示例程序:

      import pcap
      from construct.protocols.ipstack import ip_stack
      
      def print_packet(pktlen, data, timestamp):
          if not data:
              return
      
          stack = ip_stack.parse(data)
          payload = stack.next.next.next
          print payload
      
      
      p = pcap.pcapObject()
      p.open_live('eth0', 1600, 0, 100)
      p.setfilter('dst port 80', 0, 0)
      
      print 'Press CTRL+C to end capture'
      try:
          while True:
              p.dispatch(1, print_packet)
      except KeyboardInterrupt:
          print # Empty line where ^C from CTRL+C is displayed
          print '%d packets received, %d packets dropped, %d packets dropped by interface' % p.stats()
      

      为什么不使用Scapy??这是我所知道的最简单的方法,请参见下面的链接: