pcap,即 packet capture library 抓包庫,這個抓包庫給抓包系統提供了一個高層次的接口。所有網絡上的數據包,甚至是那些發送給其他主機的,通過這種機制,都是可以捕獲的。它也支持把捕獲的數據包保存為本地文件和從本地文件讀取信息。
還有一些詳細介紹可以參考: http://baike.baidu.com/view/6584893.htm
libpcap 的一些介紹,http://baike.baidu.com/view/1319961.htm
and 這是libpcap的下載資料 http://www.tcpdump.org/release/
有一些步驟或者安裝錯誤的解決方法可以參考這里:http://blog.csdn.net/cfjtaishan/article/details/7096085
總結一下:
1, 安裝gcc編譯器(如果安裝過了,就可以免了)
2, Libpcap有一些依賴包,所以在安裝Libpacap之前還得依次安裝GNU M4,bison和flex (直接敲命令就行:sudo apt-get install flex 和 sudo apt-get install bison )
3, 把下載的這幾個安裝包解壓縮到同一個目錄,終端下用root身份依次進入上述4個文件夾。分別執行如下命令編譯安裝:
./configure
make
make install
4, 測試代碼(轉自:http://hi.baidu.com/amauri3389/item/0982a400359cb9d51ef04668)
#include<stdio.h> int main(){ char *dev,errbuf[1024]; dev=pcap_lookupdev(errbuf); if(dev==NULL){ fprintf(stderr,"coundn't find default device: %s \n",errbuf); return 2; } printf("Device: %s \n",dev); return 0; }
編譯: gcc -o test test.c -lpcap (可能會出現
here.c: 在函數‘main’中:
here.c:12:5: 警告: 賦值時將整數賦給指針,未作類型轉換 [默認啟用]
的提示信息,別管它,繼續下一步)
執行: 執行的時候也因該以root身份 sudo su 輸入密碼
./test 執行生成的可執行文件test。
接下來出現的問題,我所遇到的:
提示: error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory
解決方法:打開 /etc目錄下的文件 ld.so.conf ,添加兩行
/usr/local/lib
/usr/lib
然后在終端下執行從新加載配置的命令: ldconfig
好了,再編譯運行test.c成功輸出結果:
Device: eth0
如果不以root身份執行,將會輸出:
couldn't find default device: no suitable device found
附:一些bison的參考與學習資料: http://zh.wikipedia.org/wiki/GNU_bison