传统的抓包工具存在一定的缺陷,不能够根据自己的需求进行改动。这里将分享如何在Ubuntu系统下调用libcap实现抓包。
工具/原料
安装Ubuntu系统的虚拟机一台,联网
一、安装libcap
1、编译安装m4-1.4.17,下载m4-latest.tar.gz(),解压。这个是编译flex必备的环境,否则会提示“GNU M4 1.4 is required”的错误。找到该解压文件,使用命令cd m4-1.4.17进入,在该文件夹下依次执行命令进行编译安装:./configure,sudo make,sudo make install.
2、下载flex。没有fle垓矗梅吒x,直接安装libpcap会提示“Your operating system's lex is insuffici髫潋啜缅ent to compile libpcap”错误。同样的方法安装flex。找到解压后的文件夹,使用命令cd flex-2.5.37进入,在该文件夹下依次执行命令:./configure,sudo make,sudo make install.

3、安装bison。在安港粕登漪装flex后直接安装libpcap会提示“don't have both flex and bison;reverting to lex/yacc”错误,前面安装的是flex,就需要搭配bison。与上面同样的方法安装。./configure,sudo make,sudo make install.

4、安装libcap。官网下载libcap,解压后,进入解压文件夹,执行:./configure,sudo make,sudo make install.

二、编写代码,调用libcap的接口进行抓包
1、编写代码test.c,调用libcap的接口进行抓包,text.c头文件:#include <stdio.h>#include <pcap.h>#include <stdlib.h>#include <time.h>代码如图所示。

2、编译sniffex.c文件。命令:gcc -g -Wall -o sniff sniffex.c -lpcap(将文件sniffex.c编译后取名为sniff。)编译成功后若直接运行:sudo ./sniff,则出现图中的错误提示。

3、问题解决:执行下一步的ln进行链接。找到libcap:命令为sudowhereislibpcap

4、执行命令(该命令把libcap目录中的pcap文件夹到 /usr/include 下。并且到 /usr/lib/ 把libpcap.so.1.1.1文件 重命名为:libpcap.so.1)。

5、然后执行:sudo./test,进行抓包。test是.c文件编译后的可执行文件。保存抓包到file.txt中:sudo ./sniff eth0 >file.txt,同样,sniff是.c文件编译后的可执行文件。若要将抓到的包保存到一个.txt文件中,使用命令:sudo ./sniff eth0 >file.txt