Libcap的簡介及安裝

Libpcap 簡介

libpcap 是unix/linux 平臺下的網絡數據包捕獲函數包,linux

  大多數網絡監控軟件都以它爲基礎。ubuntu

  Libpcap 能夠在絕大多數類unix 平臺下工做.windows

  Libpcap 應用程序框架網絡

  Libpcap 提供了系統獨立的用戶級別網絡數據包捕獲接口,並充分考慮到應用程序的可移植性。Libpcap能夠在絕大多數類unix 平臺下工做,在windows 平臺下,一個與libpcap 很相似的函數包 winpcap 提供捕獲功能,其官方網站是http://winpcap.polito.it/ 。框架

  Libpcap 軟件包可從 http://www.tcpdump.org/ 下載,而後依此執行下列三條命令便可安裝,但若是但願libpcap 能在linux 上正常工做,則必須使內核支持"packet" 協議,也即在編譯內核時 打開配置選項CONFIG_PACKET( 選項缺省爲打開) 。tcp

  ./configure函數

  ./make測試

  ./make installflex

  libpcap 源代碼由20 多個C 文件構成,但在 Linux 系統下並非全部文件都用到。能夠經過查看命令make 的輸出瞭解實際所用的文件。本文所針對的libpcap 版本號爲1.1.1 ,網絡類型爲常規以太網。Libpcap應用程序從形式上看很簡單.網站

  

Libpcap 安裝

如下命令適用於 ubuntu 等 deb 包管理式 linux 系統,若是是 Fedora 或 RedHat 以及 SUSE 等基於 RPM 包管理的 linux 系統可用 yum install 代替 apt-get install

1.                 安裝 gcc g++ 編譯器

命令: sudo apt-get install build-essential

C 語言經典的入門例子是 *Hello World ,下面是一示例代碼:
#include <stdio.h>
  int main(void) 

printf("Hello, world!/n"); 
return 0; 

咱們假定該代碼存爲文件‘hello.c’ 。
要用 編譯該文件,使用下面的命令: $ gcc -Wall hello.c -o hello 
該命令將文件‘hello.c’ 中的代碼編譯爲機器碼並存儲在可執行文件 ‘hello’ 中。
機器碼的文件名是經過 選項指定的。該選項一般做爲命令行中的最後一個參數。若是被省略,輸出文件默認爲‘a.out’ 。 若是當前目錄中與可執行文件重名的文件已經存在,它將被複蓋。 選項 開啓編譯器幾乎全部經常使用的警告── 。 編譯器有不少其餘的警告選項,但 是最經常使用的。默認狀況下GCC 不會產生任何警告信息。當編寫 C 或 C++ 程序時編譯器警告很是有助於檢測程序存在的問題。 本例中,編譯器使用了 選項而沒產生任何警告,由於示例程序是徹底合法的。 
要運行該程序,輸入可執行文件的路徑以下: $ ./hello Hello, world! 
這將可執行文件載入內存,並使 CPU 開始執行其包含的指令。 路徑 指代當前目錄,所以 載入並執行當前目錄下的可執行文件 ‘hello’ 。

2.                 安裝 GNU M4

命令: sudo apt-get install m4

這個是編譯flex 必備的環境,不然會提示「GNU M4 1.4 is required」 的錯誤

3.                 安裝 flex

命令: sudo apt-get install flex

沒有flex ,直接安裝libpcap 會提示「Your operating system's lex is insufficient to compile libpcap」 錯誤。

4.                 編譯 bison

命令: sudo apt-get install bison

在安裝flex 後直接安裝libpcap 會提示「don't have both flex and bison;reverting to lex/yacc」 錯誤,前面安裝的是flex ,就須要搭配bison

5. 編譯 libpcap

上面四步完成後,就可使用下面三個指令安裝libpcap 環境: 切換到libpcap 目錄下( 具體可查看libcap目 錄下官方提供的install 文檔) 
./configure 
make 
sudo make install

6. 運行 ldconfig ,至此完成。

簡單的例子測試一下libpcap :
//device.c 
#include <stdio.h>
int main(int argc,char *argv[])

char *dev, 
errbuf[PCAP_ERRBUF_SIZE]; 
dev=pcap_lookupdev(errbuf); 
if(dev==NULL)

printf(stderr,"couldn't find default device: %s/n",errbuf); 
return(2); 

printf("Device: %s/n",dev); 
return(0); 

編譯指令:gcc -o device device.c -lpcap 
備註:編譯時要使用libpcap 的參數 -lpcap ,不然會提示「pcap_lookupdev 未定義的引用」 的錯誤。
運行指令:./device

在QT creator 中使用libpcap

編寫代碼時在頭文件中引入 pcap.h 便可 . 編譯時須要在 .pro 工程文件中加入選項

 

LIBS   += -L/usr/local/lib /                

                            -lpcap

相關文章
相關標籤/搜索