最近看到可以通过python来抓包分析,比起以前通过wireshark+lua来分析要更顺手一些,因此也考虑使用pypcap来做一些尝试。但直接pip install pycap总是失败,因此写下此文档来记录安装过程
- pypcap的官网地址是:https://github.com/dugsong/pypcap,可以看到最后更新日期为2010年,因此果断使用winpython 2.7环境来做试验
- 下载pypcap源码,阅读install文件中"Building under Windows"部分
- 根据文档描述,安装Pyrex模块。执行:python -m easy_install Pyrex
- 下载WinPcap源码,地址是:http://www.winpcap.org/devel.htm,下载Developer's Pack,并解压。
- 检查INSTALL文档中提到的distutils.cfg,发现不用修改。
- 文档中提到“Unpack the module sources to c:\pypcap, and developer's pack to c:\wpdpack.
Edit the pypcap Makefile; uncomment the following line:
CONFIG_ARGS = --with-pcap=..\\wpdpack”,可以看出使用了一个相对目录来寻找WinPcap目录。照办!在我的电脑上修改后:
PYTHON = D:\\WinPython-32bit-2.7.10.2\\python-2.7.10\\python.exe
CONFIG_ARGS = --with-pcap=..\\wpdpack - 文档中提到“and change the line:
pyrexc pcap.pyx
to read:
$(PYTHON) c:\Python26\Scripts\pyrexc.py pcap.pyx” ,在我的电脑上修改后$(PYTHON) D:\WinPython-32bit-2.7.10.2\python-2.7.10\Scripts\pyrexc.py pcap.pyx - 在pypcap目录下执行"D:\WinPython-32bit-3.4.2.3\tools\mingw32\bin\mingw32-make",发现会报错"error: Unable to find vcvarsall.bat"。经pycharm下调试后发现是需要VS2008编译环境,但我的电脑上只有VS2010环境。因此要在执行make之前,先"set VS90COMNTOOLS=%VS100COMNTOOLS%"
- 继续make报错,提示"..\wpdpack\include/pcap\pcap.h(41) : fatal error C1083: 无法打开包括文件:“pcap-stdinc.h”: No such file or directory"
- 修改setup.py中:for sd in ('include/pcap', 'include', ''): 修改为 for sd in ('include', 'include/pcap', ''): 再重新make可以成功
- 再执行"D:\WinPython-32bit-3.4.2.3\tools\mingw32\bin\mingw32-make install"来安装模块,根据文档描述检查pcap.pyd是存在的。
- 此时启动ipython,执行import pcap 可以成功。根据文档描述,执行:pcap.pcap().next() 可以看到输出。
- 因此可以确认pypcap是安装成功了。
- 继续安装dpkt,开始后面的研究吧。