如何使用python套接字嗅探ICMP和TCP请求

如何使用python套接字嗅探ICMP和TCP请求,python,sockets,python-2.7,tcp,icmp,Python,Sockets,Python 2.7,Tcp,Icmp,我正试图编写一个程序,通过python2.7套接字嗅探传出的ICMP和TCP请求数据包 但是,我只知道如何嗅探端口上的传入数据包 超级用户可以在Llnux上执行该程序来嗅探任何传出的ICMP和TCP数据包。 我该怎么办 项目页面中的示例 >>> import dpkt, pcap >>> pc = pcap.pcap() >>> pc.setfilter('icmp') >>> for ts, pkt in pc: ...

我正试图编写一个程序,通过python2.7套接字嗅探传出的ICMP和TCP请求数据包 但是,我只知道如何嗅探端口上的传入数据包

超级用户可以在Llnux上执行该程序来嗅探任何传出的ICMP和TCP数据包。 我该怎么办

项目页面中的示例

>>> import dpkt, pcap
>>> pc = pcap.pcap()
>>> pc.setfilter('icmp')
>>> for ts, pkt in pc:
...     print `dpkt.ethernet.Ethernet(pkt)`
...
Ethernet(src='\x00\x03G\xb2M\xe4', dst='\x00\x03G\x06h\x18', data=IP(src='\n\x00\x01\x1c', dst='\n\x00\x01\x10', sum=39799, len=60, p=1, ttl=128, id=35102, data=ICMP(sum=24667, type=8, data=Echo(id=512, seq=60160, data='abcdefghijklmnopqrstuvwabcdefghi'))))
Ethernet(src='\x00\x03G\x06h\x18', dst='\x00\x03G\xb2M\xe4', data=IP(src='\n\x00\x01\x10', dst='\n\x00\x01\x1c', sum=43697, len=60, p=1, ttl=255, id=64227, data=ICMP(sum=26715, data=Echo(id=512, seq=60160, data='abcdefghijklmnopqrstuvwabcdefghi'))))
^CTraceback (most recent call last):
  File '<stdin>', line 1, in ?
  File 'pcap.pyx', line 298, in pcap.pcap.__next__
KeyboardInterrupt
>>>
>>> pc.stats()
(4851, 0, 0)

你试过什么?你被卡在哪一部分?您想使用libpcap、显式原始套接字还是其他替代方法?我是python的初学者。我参考了一些套接字示例来练习网络编程。示例导入套接字、创建套接字对象、设置套接字和绑定端口以侦听传入的数据包。但是这个程序只能嗅探套接字绑定的端口。所以,我搞不清楚如何嗅探任何传出的数据包。嗯,您需要了解原始套接字和可能的混杂模式。阅读手册页或查找教程。玩Wireshark并阅读其文档。也许可以编写一些简单的脚本来使用原始套接字。然后,您可能希望将libpcap与实际程序的各种Python绑定一起使用。