Libpcap是Packet Capture library的英文缩写,即数据包捕获函数库,该库提供的C函数接口用于捕获经过指定网络接口(通过将网卡设置为混杂模式,可以捕获所有经过该网络接口的数据包)的数据包。
著名的TCPDUMP就是在Libpcap的基础上开发而成的,Libpcap提供的接口函数主要实现和封装了与数据包的采集、构造、发送等有关的功能。
Libpcap面向上层应用,提供了用户级别的网络数据包捕获接口,在系统部署时充分考虑到应用程序的可以移植性。
Libpcap主要有如下功能:
(1)数据包捕获
捕获流经本网卡的所有原始数据包,甚至对交换设备中的数据包也能够进行捕获,本功能是嗅探器的基础。
(2)自定义数据包发送
构造任意格式的原始数据包,并发送到目标网络,本功能是新协议验证、甚至攻击验证的基础。
(3)流量采集与统计
对所采集到的网络中的流量信息进行按照新规则分类,按指标进行统计,并输出到指定终端。利用这项功能可以分析目标网络的流量特性。
(4)规则过滤
Libpcap自带规则过滤功能,并提供脚本编程接口,能够按照用户编程的方式对已经采集到的数据包进行过滤,以便提高分析的性能。
Libpcap的应用范围:
由于拥有强大的功能,当前基于Libpcap的应用比较广泛,有很多Unix上的流量相关的网络系统都是基于Libpcap的,它的一些典型应用如下:
(1)网络协议分析器
Libpcap应用最多的就是网络协议分析器,也可以称之为网络嗅探。
(2)网络流量发生器
网络流量发生器也是Libpcap的一大应用,它是基于Libpcap的数据构造与发送功能,可以有针对性的构造各种形式的数据包,并执行发送工作,这样的组合便构成了网络流量的产生工具。
(3)网络入侵检测系统
网络入侵检测系统(IDS)是发现网络入侵行为的关键,利用Libpcap所提供的数据包捕获功能,可以进一步开发出IDS。
(4)网络扫描器
这是基于Libpacp的数据包构造与发送功能。当前最著名的网络扫描器Tcpdump就是基于Libpcap开发而成的。
(5)其他安全工具
利用Libpacp可以设计出其他的网络安全工具。
不过有一点要提醒:Libpacp只是提供网络数据包的监测以及发送功能,并不提供控制层面的服务,类似于防火墙那种数据包过滤的功能,Libpcap是无法实现的。
Libpcap工作原理介绍
Libpcap是Unix/Linux平台下的网络数据包捕获数据库。它是一个独立于系统的用户级数据包捕获API接口,为底层网络监测提供了一个可以移植的框架。
(1) 工作原理
一个包捕获机制包含三个主要部分,分别是面向