- 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