Linux 网络编程——libpcap详解

libpcap是一个功能强大的网络数据包捕获库,广泛应用于Linux系统,著名的tcpmp就是基于libpcap实现的。

libpcap的主要功能包括数据包的捕获、分析和处理。在使用libpcap之前,需要先安装该库,其头文件位于 /usr/local/include/pcap/pcap.h

在使用libpcap进行应用程序开发时,基本步骤如下:

  • 获取网络接口设备名
  • 获取网络号(IP地址)和掩码
  • 打开网络接口
  • 捕获数据包
  • 释放网络接口资源

获取网络接口设备名的函数是 pcap_lookupdev,它返回设备名的指针。成功时返回第一个合适的网络接口名称,失败时返回 NULL 并填充 errbuf

获取网络号(IP地址)和掩码的函数是 pcap_lookupnet,需要指定网络设备名(可通过 pcap_lookupdev 获取),并返回IP地址和子网掩码。

打开网络接口的函数是 pcap_open_live,需要接口名、捕获数据包长度、混杂模式标志以及等待时间作为参数,返回一个 pcap_t 类型的指针以便后续操作。

捕获数据包的函数包括 pcap_nextpcap_loop。前者捕获单个数据包并立即返回,后者则循环捕获指定数量的数据包或直到遇到错误,捕获后会调用回调函数。

释放网络接口资源的函数为 pcap_close,接收 pcap_t 类型指针作为参数,关闭接口并释放相关资源。

Linux 网络编程——libpcap详解,工具推荐:最好用的pCap工具

在实际应用中,可以通过设置过滤条件来接收特定数据包。使用BPF(Berkeley Packet Filter)语法编写过滤表达式,使用 pcap_compile 编译为内部格式,然后通过 pcap_setfilter 应用过滤规则。

例如,要接收目的端口为80的数据包,可以编写适当的过滤规则并应用,然后使用 pcap_looppcap_next 捕获满足条件的数据包。

Linux 网络编程——libpcap详解,工具推荐:最好用的pCap工具

libpcap介绍

Libpcap是Packet Capture Library的英文缩写,即开放源代码的数据包捕获C函数库,用于捕获网卡数据或分析pcap格式的抓包数据。Tcpmp和Wireshark均以此为基础。

libpcap的主要功能包括:网络报文抓取、网络报文构建、抓包文件分析和自定义BPF过滤。

网络报文按照协议层次逐层构建,简单而言,从应用层数据和协议开始构建传输层报文,再到网络层和数据链路/物理层报文。

libpcap主要用于网络嗅探,处理过程如下:

  1. 打开网络接口
  2. 打开离线的pcap文件
  3. 抓包函数
  4. 过滤函数编译
  5. 设置过滤函数
  6. 释放网络接口
  7. 打开网络包保存文件
  8. 将网络包写入文件
  9. 关闭网络包文件

[源码和文档分享] 基于Libpcap实现的局域网嗅探抓包发包解析工具

本软件基于Libpcap设计,旨在构建一个易于使用且界面美观的网络监控工具。主要功能包括局域网数据包捕获、分析、图形化显示及统计分析等。

1. 数据包捕获:利用Libpcap,软件支持扫描并选择WiFi和以太网类型的网卡进行局域网数据包监听与捕获,用户可选择混杂模式或非混杂模式。

2. 数据包分析:捕获的数据包会被分类整理,提取版本、头长度、服务类型和其他信息,并进行规范化展示。

3. 图形化显示:通过表格展示数据包信息,方便用户查看和分析数据。

4. 统计分析:软件对捕获的数据包进行统计,对不同类型和协议进行分类,并以图形方式展示。

5. 数据清空:提供功能以清除所有已捕获数据包。

6. Ping功能:与目标主机连通性测试。

7. TraceRoute功能:了解从本机到互联网另一端主机的路径。

8. ARP-Attack功能:在局域网实现ARP攻击,测试并断开指定IP的网络连接。

详细参考文档和源码下载地址:write-bug.com/article/1

详细讲解Linux内核角度分析tcpdump原理(1)

tcpdump是Linux系统中的抓包工具,基于libpcap库。它支持对网络数据包的过滤和分析,能保存捕获的数据包为pcap文件,便于使用Wireshark进行进一步分析。

tcpdump使用libpcap进行包捕获,并通过BPF机制进行过滤。安装libpcap需要完成库的安装、测试、编译等步骤。

tcpdump在网络包捕获时,创建套接字使用AF_PACKET和SOCK_RAW,通过调用相关函数接收和过滤链路层的数据包。

文章总结了tcpdump从创建套接字到发送和接收数据包的整个流程,以及如何使用libpcap和BPF进行有效的过滤。

工具推荐:最好用的pCap工具

在计算机网络管理中,pcap(packet capture)API主要在类Unix系统的libpcap库中实现,Windows系统则使用WinPcap进行数据包捕获和过滤。

多种网络工具都使用了libpcap或WinPcap,包括协议分析器、网络监视器和入侵检测系统等。pcap API使用C语言编写,其他语言如Java和.NET通常需要封装器。

推荐的流量监控工具包括:Nload、Iftop、Jnettop、Iptraf等。

Linux 网络编程——libpcap详解,工具推荐:最好用的pCap工具

流量捕获工具包括:Libpcap / Tcpmp、Ngrep、PF_RING等。

流量分析工具如:Wireshark、Tcpflow、Tcpstat等。

文件提取工具有:Xplico、NetworkMiner、Dsniff等。

这些工具为网络管理提供了多种选择,满足实时监控、捕获、分析和文件提取等不同需求。