socket程式設計之DEV C++配置winpcap開發環境並編寫網路嗅探器sniffer
期末計算機網路課程設計讓做一個網路嗅探器,要求可以檢測和選擇網路卡,並開啟到混雜模式,監聽區域網中的所有資料包並解析出所用網路協議以及首部各個欄位的值,如 MAC地址,IP地址,埠號等。
然後從網上各種找資料,C語言下基本上都是基於 winpcap包做的,難的是配置環境。網上有各種 VS的配置教程,但是本人用不慣 VS,所以就配置了 DEV C++,朋友也有把 codeblocks 配置成功的。下面就和大家分享一下配置過程。參考文章:DEV 搭建winpcap開發環境。
首先要下載 winpcap的兩個東西:
WinPcap V4.1.2:驅動程式、Dll檔案
http://www.winpcap.org/install/bin/WinPcap_4_1_2.exe
WinPcap V4.1.2 Developer’s Pack:庫檔案、標頭檔案、簡單的示例程式程式碼和幫助檔案
http://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
第一個 exe檔案直接安裝到任意目錄即可。第二個 zip檔案下載解壓後將名為 WpdPack的資料夾放到 C盤下,當然放到別的地方也可以。
配置步驟:
第一步:
在Tools->Compiler Options->Directories->Libraries (即工具->編譯選項->目錄->庫) 裡面設定winpcap開發包目錄的Lib目錄;在Tools->Compiler Options->Directories->Includes(即工具->編譯選項->目錄->C/C++包含檔案)(C和C++兩個我都設定了,方便)裡面設定winpcap開發包目錄的Include目錄。
這裡的 lib目錄和include目錄就是上面 zip檔案解壓後的 C:\WpdPack 中的資料夾。
第二步:
在Project->Project Options->Parameters->Linker(即專案->專案屬性->引數->連結)下面點選“Add Library or Object”(加入庫或物件)按鈕,將開發包目錄 Lib下的wpcap.lib檔案(即 C:\WpdPack\Lib 目錄下的檔案)新增上去。
第三步:
在原始碼檔案#include "pcap.h"的前面增加預處理定義——#define WPCAP和#define HAVE_REMOTE。好像我只加了“#define HAVE_REMOTE”,例子中的程式碼就可以執行了。但是看文件中,好像不是這樣,具體好要多測試一些程式碼才能知道。
上面的步驟是其他 CSDN部落格上給的,但是在實際操作的時候還需要加上 #include "winsock.h" 這句話,包含 winsock.h 標頭檔案,不然會提示某些變數未定義的錯誤。此外在上面第二步中還需要加入 C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib/WS2_32.Lib 這個檔案,不然也是會報一些亂七八糟的錯誤。
至此開放環境就配置好了,然後就是編寫程式碼。先給出一個 winpcap中文技術文件。嗅探器的程式碼基本上都是這裡面的原碼,然後在它的基礎上改一下、拼接一下就可以了。大體流程是檢測網路卡->選擇網路卡->篩選器的設定(可以只捕捉使用upd或tcp等協議的包)->將捕捉到的資料包分析。
另外DEV C++在編譯執行的時候需要選擇 32位的編譯器,這個我也不知道為什麼……自己試出來的。
再另,網路嗅探器捕捉到的大多數都是亂碼,因為編碼方式是多種多樣的。可以使用 ICMP協議中的 ping命令,ping通某個網站,然後將捕獲的資料包以 ascii碼形式輸出,將會是有規矩的字元。
這裡要提一下的是,分析資料包的時候好像沒有現成的函式或資料結構等,需要自己定義。比如要定義 IP協議的首部,根據每個欄位的含義解析,這裡充分利用了二進位制的相與、左移、右移等操作。另,我們捕獲到的資料包是完整的 MAC幀,也就是資料鏈路層的包,然後可以根據使用的協議確定協議首部的長度,並進一步確定資料部分的位置和大小。
執行效果如下:
最後附上上面說的用到的各種檔案以及原始碼的下載地址:原始碼及配套檔案下載。
相關文章
- 網路防嗅探工具SniffJoke
- centos配置vim c++開發環境CentOSC++開發環境
- Linux環境下的Socket程式設計Linux程式設計
- Socket 程式設計 (網路篇)程式設計
- Linux 開發環境 -- C/C++開發環境編譯安裝Linux開發環境C++編譯
- python網路-Socket之TCP程式設計(26)PythonTCP程式設計
- 網路程式設計之socket程式設計
- 編寫開發環境很難嗎開發環境
- 網路資料嗅探工具HexInject
- PyQt5開發環境配置並使用QT開發環境
- IMX6ULL開發板網路環境配置
- Python網路Socket程式設計Python程式設計
- 彙編程式開發環境搭配開發環境
- shell程式設計之環境變數配置檔案程式設計變數
- python運維開發之socket網路程式設計01薦Python運維程式設計
- python運維開發之socket網路程式設計04薦Python運維程式設計
- 駭客玩具入門——6、網路嗅探
- 網路圖片嗅探工具driftnet
- 區域網密碼嗅探器 官網密碼
- 嗅探器(割點)
- Ubuntu之C++開發環境的搭建UbuntuC++開發環境
- VsCode配置C/C++開發環境VSCodeC++開發環境
- VSCODE 配置 C/C++ 開發環境VSCodeC++開發環境
- JBOSS安裝配置並搭建本地開發環境開發環境
- Java環境下載、配置環境、編寫我的第一個Java程式Java
- 配置oracle網路環境Oracle
- PHP開發之環境搭建及配置PHP
- 專案開發中的pro、pre、test、dev環境及SpringBoot多環境配置devSpring Boot
- 開發環境配置開發環境
- PHP移動網際網路開發(1)——環境搭建及配置PHP
- 15 款最好的 C/C++ 編譯器和整合開發環境C++編譯開發環境
- emacs開發環境配置(4)——rust開發環境Mac開發環境Rust
- Xamarin ios C#蘋果應用開發第二講配置環境和編寫程式碼iOSC#蘋果
- 配置開發環境、生成環境、測試環境開發環境
- HttpOnly 隱私嗅探器HTTP
- VC環境下window網路程式:UDP Socket程式UDP
- JAVA開發環境搭建及變數配置(利用eclipse編寫第一個Java程式HelloWorld)Java開發環境變數Eclipse
- linux環境下的c++程式設計LinuxC++程式設計