Linux下基于libpcap的Sniffer开发
首先是平台的搭建:参考网友:http://blog.csdn.net/fengyun1989/article/details/7384899
libpcap 是unix/linux 平台下的网络数据包捕获函数包,
大多数网络监控软件都以它为基础。
Libpcap 可以在绝大多数类unix 平台下工作.
Libpcap 应用程序框架
Libpcap 提供了系统独立的用户级别网络数据包捕获接口,并充分考虑到应用程序的可移植性。Libpcap 可以在绝大多数类unix 平台下工作,在windows 平台下,一个与libpcap 很类似的函数包 winpcap 提供捕获功能,其官方网站是http://winpcap.polito.it/ 。
1,安装GCC。(ubuntu默认安装了GCC)
命令:sudo apt-get install build-essential
写一个hello程序测试下:
#include <stdio.h>
int main(void)
{
printf("Hello, world!/n");
return 0;
}
假定该代码存为文件‘hello.c’ 。
要用 编译该文件,使用下面的命令: $ gcc -Wall hello.c -o hello
用./hello执行就会显示Hello, world!;
2.编译GNU M4
这个是编译flex必备的环境,否则会提示“GNU M4 1.4 is required”的错误
打开网址:ftp.gnu.org/gnu/m4/ 下载 GNU M4最新版软件包,通过 tar zxvf 命令解压文件,进入M4的目录,用命令ls,就会发现有个可执行文件configure,然后依次执行
./confugure
(sudo)make
(sudo)make install.
这样,GNU M4就编译安装好了。
3.编译flex(version 2.5.33)
没有flex,直接安装libpcap会提示“Your operating system‘s lex is insufficient to compile libpcap”错误。
打开网址:flex.sourceforge.net/ 下载 flex最新版软件包,通过 tar zxvf 命令解压文件,进入flex的目录,用命令ls,就会发现有个可执行文件configure,然后依次执行
./confugure
(sudo)make
(sudo)make install.
这样,flex就编译安装好了
4.编译bison(version 2.3)
在安装flex后直接安装libpcap会提示“don‘t have both flex and bison;reverting to lex/yacc”错误,前面安装的是flex,就需要搭配bison
打开网址:ftp.gnu.org/gnu/bison/ 下载 bison最新版软件包,通过 tar zxvf 命令解压文件,进入bison的目录,用命令ls,就会发现有个可执行文件configure,然后依次执行
./confugure
(sudo)make
(sudo)make install.
这样,bison就编译安装好了
5.编译libpcap
以上4步安装好了。就到www.tcpdump.org/ 下载libpcap的最新版。然后解压文件,进入到该目录。用ls命令也能发现有个可执行文件configure,然后依次执行命令:
./confugure
(sudo)make
(sudo)make install.
这样,libpcap就编译安装好了
安装好libpcap后需要进行一些配置:
1.做一个符号链接到/sur/lib/:sudo -s ln /usr/local/lib/libpcap.so.1 /usr/lib/libpcap.so.1
2.把iblpcap目录中的pcap文件夹拷到/usr/include下
3.如果运行时仍然提示找不到libpcap.so.1,就输入:sudo ldconfig更新以下共享库
实例:
#include <pcap.h>
#include <stdio.h>
int main()
{
char errBuf[PCAP_ERRBUF_SIZE], * device;
device = pcap_lookupdev(errBuf);
if(device)
{
printf("success: device: %s\n", device);
}
else
{
printf("error: %s\n", errBuf);
}
return 0;
}
编译:gcc -g -Wall -o test test2.c -lpcap(高手们可以自己写Makefile进行编译)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。