先说结论,直接使用pcap-ct。
因为项目需求需要在windows下抓包,用python编程。所以就找相关的轮子。找到了三个:
1、pypcap(pip install pypcap)
2、libpcap(pip install libpcap)
3、pcap-ct(pip install pcap-ct)
那么,这三个有啥区别呢?其实从底层来说,都是基于C libpcap的python封装,无非是使用方便不方便的问题。
pypcap对C libpcap封装后,提供了pythonic的API接口;
而libpcap就比较简单粗暴了,根据官网说法:
libpcap is a lightweight Python package, based on the ctypes library.
It is fully compliant implementation of the original C libpcap from 1.0.0 up to 1.9.0 API and the WinPcap's 4.1.3 libpcap (1.0.0rel0b) API by implementing whole its functionality in a clean Python instead of C.
就是说即使是python的实现,也完全兼容WinPcap 4.1.3的API,比较复杂难用(不然我为啥用python???);
pcap-ct兼容pypcap的API,并且简化了安装并修复了BUG。
坑就是!!!:
在Win10上,我先安装了Npcap(win10要Npcap,WinPcap有兼容性问题),勾选了WinPcap兼容,下载Npcap-SDK和pypcap源码放在同一目录,然后再pypcap目录下 python setup.py install,源码编译安装pypcap(需要电脑安装visual studio 2015以上版本,有编译依赖)。结果安装完成后发现有bug,python程序可以发现网络接口,一抓包就闪退,还不报错。
然后安装libpcap,可以抓包,但接口实在太难用,就想有没有其他方法。
然后想着要不试一下pcap-ct,结果真香,直接pip安装就行,还没乱七八糟的依赖,我要给作者点赞!
参考: