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进行编译)

时间: 2024-11-10 17:04:05

Linux下基于libpcap的Sniffer开发的相关文章

Linux下基于源码方式安装MySQL 5.6

MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整.本文描述了如何在源码方式下安装MySQL. 1.安装环境及介质#安装环境SZDB:~ # cat /etc/issueWelcome to SUSE Linux Enterprise Server 10 SP3

Linux下基于nw音乐电台

Linux下基于nw音乐电台,希望大神改进 百度云:下载

Linux下基于Erlang的高并发TCP连接压力实验

[题解整理]二分题 题目类型: 二分查找: 二分答案. 大致解题思路: 查找注意有序和返回值: 浮点数注意精度: 整数注意返回值,建议另外维护一个变量,用于储存可行解. 题目 分类 传送门 WA点 poj 2785 二分查找 题解 lightoj 1088 二分查找 题解 lightoj 1307 二分查找 题解 longlong poj 2456 整数二分答案 题解 poj 3104 整数二分答案 题解 poj 3258 整数二分答案 题解 poj 3273 整数二分答案 题解 lightoj

Linux 下基于多线程服务器/客服端聊天程序源码

Linux 下基于多线程服务器/客服端聊天程序,采用阻塞的socket技术,和多线程技术实现. 客服端程序:client.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h>

Linux下基于文件描述符的文件操作(非缓冲)

1 文件描述符 内核为每个进程维护一个已打开文件的记录表(实现为结构体数组),文件描述符是一个较小的正整数(0-1023)(结构体数组下标),它代表记录表的一项,通过文件描述符和一组基于文件描述符的文件操作函数,就可以实现对文件的读.写.创建.删除等操作. 常用基于文件描述符的函数有open(打开).creat(创建).close(关闭).read(读取).write(写入).ftruncate(改变文件大小).lseek(定位).fsync(同步).fstat(获取文件状态).fchmod(权

深度Linux下配置Eclipse的Android开发环境

前段时间开始折腾Linux,其它常用软件都轻松找到了功能相同或相近的替代软件,但到了android开发工具这块,网上好多朋友都推荐使用android studio,而俺是个eclipse的老顽固,在windows下就不习惯使用android studio,再加上手头还有一个在windows下用eclipse做了了一半的项目,只好再折腾下如何在linux下配置eclipse的android开发环境.以前在windows下配置eclipse的android开发环境一般是以下几个步骤:1.安装JDK,

c语言基于Linux下用libpcap实现抓包程序

c语言基于libpcap实现一个抓包程序过程 基于pcap的嗅探器程序的总体架构,其流程如下:(1)首先要决定用哪一个接口进行嗅探开始.在Linux中,这可能是eth0,而在BSD系统中则可能是xl1等等.我们也可以用一个字符串来定义这个设备,或者采用pcap提供的接口名来工作.(... 基于pcap的嗅探器程序的总体架构,其流程如下: (1)首先要决定用哪一个接口进行嗅探开始.在Linux中,这可能是eth0,而在BSD系统中则可能是xl1等等.我们也可以用一个字符串来定义这个设备,或者采用p

Linux下基于多线程的echo

准备开始写一些Linux 下网络编程以及多线程的blog,就从这个简单的echo程序开始吧. 在echo的服务端使用多线程与客户进行通信,可以实现一个服务端程序同时连接多个客户的功能.那么,到底在服务端要有多少个线程呢? 答案是:1+1+n.一个主线程,一个监听(listen)线程,与n个客户进行通信的n个线程. 服务端代码: 1 #include "../unp.h" 2 #include <pthread.h> 3 4 void* str_echo(void* argv

在Linux下搭建Java web的开发环境

笔者最近在学习Linux,想通过搭建Java Web开发环境来巩固学习的基本基本知识. 1.明确实验环境及下载相关软件 在虚拟机中搭建好的Linux环境下搭建.下图 1.1 是相关软件.UTomcat.64位Linux下jdk.mysql.<均可到官网上去下载> 图 1.1 所需软件 2.制作ISO文件. 需要将图 1.1 中的三个文件封装成ISO文件.使用UltraISO工具.不会的自己百度吧,百度很强大的哦! 图 1.2 制作后的到的ISO文件 3.将ISO文件添加到Linux系统中. 图