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 
#include 

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

你可能感兴趣的:(pcap,gcc,与,makefile)