scapy 和 pypcap 丢包严重时,如何嗅探 python 上的所有数据包?

How to sniff all packets on python when scapy and pypcap have serious loss?

我尝试使用 python 在 Win10 上嗅探数据包。然而,我发现很多数据包实际上被scapy丢弃了。

比如我从ftp下载了一个2MB的文件,wiresharks抓包接近2000个,scapy只抓到500个。

我试过pypcap,结果几乎一样,超过一半的数据包被丢弃,尤其是在下载时。

是否有解决方案可以避免这种丢失并使 scapy 执行与 wireshark 相同,或者 python 上没有能够在短时间内缓冲大量数据包的库?

您可以让 Scapy 使用 tcpdump(或 Windows 下的 windump)为您嗅探数据包,例如:

sniff(opened_socket=L2ListenTcpdump())