libpcap網絡數據包捕獲函數庫 的介紹與安裝

  • libpcap簡介
  • 下載編譯安裝
  • 實例

一 Libpcap簡介

Libpcap是Packet Capture Libray的英文縮寫,即網絡數據包捕獲函數庫。該庫提供的C函數接口用於捕捉經過指定網絡接口的數據包,該接口應該是被設爲混雜模式。這個在原始套接子中有提到。

著名的軟件TCPDUMP就是在Libpcap的基礎上開發而成的。Libpcap提供的接口函數實現和封裝了與數據包截獲有關的過程。

Libpcap提供了用戶級別的網絡數據包捕獲接口,並充分考慮到應用程序的可移植性。Libpcap可以在絕大多數Linux平臺上運行。在Windows平臺上,也有一款與其功能類似的開發庫:Wincap。

它的工作在上層應用程序與網絡接口之間。

主要功能:

  • 數據包捕獲:捕獲流經網卡的原始數據包
  • 自定義數據包發送:構造任何格式的原始數據包
  • 流量採集與統計:採集網絡中的流量信息
  • 規則過濾:提供自帶規則過濾功能,按需要選擇過濾規則

二 下載:
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libpcap.html

三 安裝編譯

tar -zxvf libpcap-1.9.1.tar.gz
./configure 配置
make 編譯
make install 安裝,默認目錄/usr/local/
將/usr/local/lib和/usr/local/include兩個目錄拷貝到自己程序目錄下,gcc -Wl,rpath=./lib -L./lib -I./include

可能出錯,請查看你是否安裝了所有的依賴包bison, m4, GNU, flex以及libpcap-dev:

#yum install bison
#yum install m4
#yum install flex

四 實例
test.c:

#include <pcap.h>
#include <stdio.h>

int main()
{
  char errBuf[PCAP_ERRBUF_SIZE], * device;
  device = pcap_lookupdev(errBuf);
  if(device)
  {
    printf("success: device: %s\n", device);
  }
  else
  {
    printf("error: %s\n", errBuf);
  }
  return 0;
}

Makefile:

  1 CC = gcc
  2 OBJS = test.o
  3 CFLAGS = -Wl,-rpath=./lib -L./lib
  4 CFLAGS += -I./include
  5 LIBS = pcap
  6 DEST = test
  7 RM = rm -f
  8 
  9 $(DEST):$(OBJS)
 10         $(CC) -o $(DEST) $(OBJS) $(CFLAGS) $(addprefix -l, $(LIBS))
 11 clean:
 12         $(RM) $(DEST) $(OBJS)  
 13 
 14 #test: test.c
 15 #       gcc -o test test.c -lpcap -Wl,-rpath=./lib -L./lib -I./include
 16 #clean:
 17 #       rm -f test.o test

運行結果:./test

success: device: ens33

參考
https://blog.csdn.net/htttw/article/details/7521053
https://blog.csdn.net/weixin_34400525/article/details/85551430

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章