pcap的安装
pcap,即 packet capture library 抓包库,这个抓包库给抓包系统提供了一个高层次的接口。所有网络上的数据包,甚至是那些发送给其他主机的,通过这种机制,都是可以捕获的。它也支持把捕获的数据包保存为本地文件和从本地文件读取信息。
还有一些详细介绍可以参考: http://baike.baidu.com/view/6584893.htm
libpcap 的一些介绍,http://baike.baidu.com/view/1319961.htm
and 这是libpcap的下载资料 http://www.tcpdump.org/release/
有一些步骤或者安装错误的解决方法可以参考这里:http://blog.csdn.net/cfjtaishan/article/details/7096085
总结一下:
1, 安装gcc编译器(如果安装过了,就可以免了)
2, Libpcap有一些依赖包,所以在安装Libpacap之前还得依次安装GNU M4,bison和flex (直接敲命令就行:sudo apt-get install flex 和 sudo apt-get install bison )
3, 把下载的这几个安装包解压缩到同一个目录,终端下用root身份依次进入上述4个文件夹。分别执行如下命令编译安装:
./configure
make
make install
4, 测试代码(转自:http://hi.baidu.com/amauri3389/item/0982a400359cb9d51ef04668)
#include<stdio.h>
int main(){
char *dev,errbuf[1024];
dev=pcap_lookupdev(errbuf);
if(dev==NULL){
fprintf(stderr,"coundn't find default device: %s \n",errbuf);
return 2;
}
printf("Device: %s \n",dev);
return 0;
}
编译: gcc -o test test.c -lpcap (可能会出现
here.c: 在函数‘main’中:
here.c:12:5: 警告: 赋值时将整数赋给指针,未作类型转换 [默认启用]
的提示信息,别管它,继续下一步)
执行: 执行的时候也因该以root身份 sudo su 输入密码
./test 执行生成的可执行文件test。
接下来出现的问题,我所遇到的:
提示: error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory
解决方法:打开 /etc目录下的文件 ld.so.conf ,添加两行
/usr/local/lib
/usr/lib
然后在终端下执行从新加载配置的命令: ldconfig
好了,再编译运行test.c成功输出结果:
Device: eth0
如果不以root身份执行,将会输出:
couldn't find default device: no suitable device found
附:一些bison的参考与学习资料: http://zh.wikipedia.org/wiki/GNU_bison