1. Mac平台
在mac上安裝scapy可以說是困難重重,一來因為scapy實在有些小眾和老舊,再加上安裝說明文檔都是python2.5 也沒有詳細說明一些安裝問題。
折騰了大概三個小時之后終於解決了這個老大難。
注:我的環境為anaconda2.3 - python2.7.10
一,首先scapy依賴了以下幾個庫:
1.PyX :
2.pcapy
3.gnuplot-py
4.dnet
其中gnuplot-py 以及pyx一定要使用官方網站上面的指定版本。
如果你翻牆不方便,請使用我的備份庫github: https://github.com/todototry/scapyInstallDependents
二,dnet是個大坑,
1. 需要注意的是dnet不能使用官方版本,需要使用libdnet1.12, 並configure ; make install 逐步安裝,一定要記得進入該dnet的python子文件夾安裝其對應的python庫。
2. 安裝好之后請注意檢查python的對應site-package中是否有dnet.so 這個文件。
3.如果出現cannot import dnet 可能的原因是:沒有安裝dnet的依賴庫: pip install graphillion
4. 如果遵照上述方法安裝后,任然出現AttributeError: 'module' object has no attribute 'intf', 請使用pip uninstall pydnet , 可能是官網的pydnet 與 libdnet1.12中的python接口沖突引起的。
三,如果sniff出現 pcapy權限不足
請卸載pcapy, 用pypcap替代,完美解決pcap權限問題。參見以下
Scapy “Warning pcapy API does not permit to get capure file descriptor”?
2. Windows平台
由於我安裝了anaconda,python2.7, 按照官方提供的package,需要python2.5,因此需要網絡搜索到python2.7的安裝包,並要注意,一定要在安裝pcap和dnet時 使用administrator身份運行,因為這涉及到系統層級的網絡操作,並配置好gnuplot,pcap的env。
參考:
1. 官網:http://www.secdev.org/projects/scapy/doc/installation.html
2. dnet安裝與dnet.so 依賴問題,http://stackoverflow.com/questions/26229057/scapy-installation-fails-on-osx-with-dnet-import-error
3. http://juhalaaksonen.com/blog/2013/12/11/installing-scapy-for-mac-os-x/
4. https://github.com/dugsong/libdnet/issues/9
5. AttributeError: 'module' object has no attribute 'intf' 解決方案: https://github.com/Homebrew/homebrew-python/issues/212