windows 環境下python 安裝 pypcap 並用pyinstaller打包到exe,解決DLL 加載失敗。


安裝 PYQT5 pypcap

環境:

windows10_x64

python3.6.3

pycharm2017.2.4

備注:

需要安裝 Visual C++ Build Tools 2015 可以解決

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

1:建立虛擬環境

創建虛擬環境,基於python3.6.3,自動包含 pip  setuptools

2:安裝pyqt5

pycharm直接在虛擬環境中安裝pyqt5,自動安裝sip 

3.安裝dpkt

pycharm直接在虛擬環境中安裝dpkt

4.安裝pypcap

4.1下載pypcap源碼https://github.com/pynetwork/pypcap/releases

4.2根據官網https://github.com/pynetwork/pypcap提示,windows下裝個Npcap

WinPcap has compatibility issues with Windows 10, therefore it's recommended to use Npcap (Nmap's packet sniffing library for Windows, based on the WinPcap/Libpcap libraries, but with improved speed, portability, security, and efficiency). Please enable WinPcap API-compatible mode during the library installation.

4.3https://nmap.org/npcap/   npcap下載地址。

 

打開WinPcap API-compatible mode,這是pypcap要求的。

打開Support raw 802.1 traffic (and  monitor mode)for wireless adapters    像是無線網絡支持。

  

4.3下載npcap的SDK  https://nmap.org/npcap/

4.4 解壓npcap SDK  

放到一個盤的根目錄並改文件夾名為wpdpack

我放在了D盤

(至少我這樣,是可以正常安裝成功的)

4.5解壓pypcap

這個要解壓到和SDK同一個盤符下,也放根目錄吧。作者寫的東西是基於linux的,沒有盤符的概念,不會跨盤符去找文件。

4.6執行命令進行安裝

介紹都說的很簡單  python.exe  setup.py install

這個python是你的系統下的python,不是你虛擬環境中的python,這個路徑又長。

教你個不用來回確認路徑的方法,和我以前配置pycharm external tools 一樣簡單。

4.6.1,用pycharm 打開pypcap的文件夾。

4.6.2,打開setup.py

4.6.3,鼠標右鍵,運行它

4.6.4,編輯它的運行參數

4.6.5,運行參數如下:

 

有用的其實就3條:

1 Script 腳本文件,我們的setup.py

2 Script parameters: 腳本參數 install 

3 Python interpreter:用的是哪個python虛擬環境  python

好了,安裝命令的  python  setup.py install 三個都有了。

再運行一下這個setup.py就可以了。

 

它自動生成的命令是:
D:\PythonTest\Virtual_Sniffer\Scripts\python.exe D:/pypcap-1.2.0/setup.py install

自認高手的就自己照着去敲吧,我是懶的敲,就用這樣的方法來執行了。

 

安裝完成了。接下來打包。

pyinstall ****.py,圖形配置在pyinstall文章。

問題是打包到了別的電腦,無法正常啟動,提示加載DLL失敗,提示出錯的行是  import pcap,warn******.txt中並沒有提示這個模塊怎么樣。

誤打誤撞,在別的電腦,首先安裝NPCAP,並勾選winpcapAPI。然后再運行,就可以了。

 

 

安裝

pcap方法接收5個參數:

  • name,監聽的網卡名稱。
  • snaplen,捕獲的每個數據包的最大長度。
  • promisc,是否開啟混雜模式
  • timeout_ms,接收數據包的超時時間
  • immediate,立即模式,如果啟用則不會緩存數據包

 

我遇到了cookie抓取長度不夠的問題。

爛寫了一些東西,加上標記,自己再拼接。

有空試試snaplen。但是它默認是65535。還能改大么?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM