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_next
和 pcap_loop
。前者捕获单个数据包并立即返回,后者则循环捕获指定数量的数据包或直到遇到错误,捕获后会调用回调函数。
释放网络接口资源的函数为 pcap_close
,接收 pcap_t
类型指针作为参数,关闭接口并释放相关资源。
在实际应用中,可以通过设置过滤条件来接收特定数据包。使用BPF(Berkeley Packet Filter)语法编写过滤表达式,使用 pcap_compile
编译为内部格式,然后通过 pcap_setfilter
应用过滤规则。
例如,要接收目的端口为80的数据包,可以编写适当的过滤规则并应用,然后使用 pcap_loop
或 pcap_next
捕获满足条件的数据包。
libpcap介绍
Libpcap是Packet Capture Library的英文缩写,即开放源代码的数据包捕获C函数库,用于捕获网卡数据或分析pcap格式的抓包数据。Tcpmp和Wireshark均以此为基础。
libpcap的主要功能包括:网络报文抓取、网络报文构建、抓包文件分析和自定义BPF过滤。
网络报文按照协议层次逐层构建,简单而言,从应用层数据和协议开始构建传输层报文,再到网络层和数据链路/物理层报文。
libpcap主要用于网络嗅探,处理过程如下:
- 打开网络接口
- 打开离线的pcap文件
- 抓包函数
- 过滤函数编译
- 设置过滤函数
- 释放网络接口
- 打开网络包保存文件
- 将网络包写入文件
- 关闭网络包文件
[源码和文档分享] 基于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等。
流量捕获工具包括:Libpcap / Tcpmp、Ngrep、PF_RING等。
流量分析工具如:Wireshark、Tcpflow、Tcpstat等。
文件提取工具有:Xplico、NetworkMiner、Dsniff等。
这些工具为网络管理提供了多种选择,满足实时监控、捕获、分析和文件提取等不同需求。