能从物理*问网络上的流量后,你需要用软件把它记录下来。这里,我们探究记录、解析和分析被捕获的数据包中最常用的软件库:libpcap和WinPcap。也将介绍包括tcpdump、Wireshark等基于这两个库的工具。
libpcap和WinPcap
libpcap是一个UNIX下的C函数库,它提供的API,能获取和过滤从任意一块网卡在数据链路层上的帧。不同的UNIX系统有不同的架构去处理数据链路层上的数据帧,所以程序员如果想要写一个能运行在UNIX上的、直接读取或者操作数据链路层上的帧的应用程序,他就不得不专门为这个特点版本的UNIX写一个访问帧的函数。libpcap的目的就是提供一个抽象层,这样程序员就能编写可运行在所有版本的UNIX上的包获取和分析工具了。
WinPcap是一个专为Windows系统设计的、基于libpcap的库。地址:http://www.winpcap.org/
当前最流行的包嗅探和分析工具(tcpdump,Wireshark,Snort,nmap,ngrep等许多工具),都是基于libpcap函数库的。因此这些工具相互都是兼容的,也就是说,我们用一种工具抓取的数据包可以直接被另一种工具读取和分析。基于libpcap的应用程序有一个典型的特征:它们都可以从任意一种网络接口设备上抓取第二层数据包,并把获取的数据存储到一个文件中去,供之后分析。其他工具可以读取这些“抓包文件”或“pcap”文件,在根据特定的协议信息对流量进行过滤后,可能又会把精简过的数据写道另一个文件中去,供进一步分析之用。