• Libcap的简介及安装


    Libpcap 简介

    libpcap 是unix/linux 平台下的网络数据包捕获函数包,

      大多数网络监控软件都以它为基础。

      Libpcap 可以在绝大多数类unix 平台下工作.

      Libpcap 应用程序框架

      Libpcap 提供了系统独立的用户级别网络数据包捕获接口,并充分考虑到应用程序的可移植性。Libpcap可以在绝大多数类unix 平台下工作,在windows 平台下,一个与libpcap 很类似的函数包 winpcap 提供捕获功能,其官方网站是http://winpcap.polito.it/ 。

      Libpcap 软件包可从 http://www.tcpdump.org/ 下载,然后依此执行下列三条命令即可安装,但如果希望libpcap 能在linux 上正常工作,则必须使内核支持"packet" 协议,也即在编译内核时 打开配置选项CONFIG_PACKET( 选项缺省为打开) 。

      ./configure

      ./make

      ./make install

      libpcap 源代码由20 多个C 文件构成,但在 Linux 系统下并不是所有文件都用到。可以通过查看命令make 的输出了解实际所用的文件。本文所针对的libpcap 版本号为1.1.1 ,网络类型为常规以太网。Libpcap应用程序从形式上看很简单.

      

    Libpcap 安装

    以下命令适用于 ubuntu 等 deb 包管理式 linux 系统,如果是 Fedora 或 RedHat 以及 SUSE 等基於 RPM 包管理的 linux 系统可用 yum install 代替 apt-get install

    1.                 安装 gcc g++ 编译器

    命令: sudo apt-get install build-essential

    C 语言经典的入门例子是 *Hello World ,下面是一示例代码:
    #include <stdio.h>
      int main(void) 

    printf("Hello, world!/n"); 
    return 0; 

    我们假定该代码存为文件‘hello.c’ 。
    要用 编译该文件,使用下面的命令: $ gcc -Wall hello.c -o hello 
    该命令将文件‘hello.c’ 中的代码编译为机器码并存储在可执行文件 ‘hello’ 中。
    机器码的文件名是通过 选项指定的。该选项通常作为命令行中的最後一个参数。如果被省略,输出文件默认为‘a.out’ 。 如果当前目录中与可执行文件重名的文件已经存在,它将被复盖。 选项 开启编译器几乎所有常用的警告── 。 编译器有很多其他的警告选项,但 是最常用的。默认情况下GCC 不会产生任何警告信息。当编写 C 或 C++ 程序时编译器警告非常有助于检测程序存在的问题。 本例中,编译器使用了 选项而没产生任何警告,因为示例程序是完全合法的。 
    要运行该程序,输入可执行文件的路径如下: $ ./hello Hello, world! 
    这将可执行文件载入内存,并使 CPU 开始执行其包含的指令。 路径 指代当前目录,因此 载入并执行当前目录下的可执行文件 ‘hello’ 。

    2.                 安装 GNU M4

    命令: sudo apt-get install m4

    这个是编译flex 必备的环境,否则会提示“GNU M4 1.4 is required” 的错误

    3.                 安装 flex

    命令: sudo apt-get install flex

    没有flex ,直接安装libpcap 会提示“Your operating system's lex is insufficient to compile libpcap” 错误。

    4.                 编译 bison

    命令: sudo apt-get install bison

    在安装flex 后直接安装libpcap 会提示“don't have both flex and bison;reverting to lex/yacc” 错误,前面安装的是flex ,就需要搭配bison

    5. 编译 libpcap

    上面四步完成后,就可以使用下面三个指令安装libpcap 环境: 切换到libpcap 目录下( 具体可查看libcap目 录下官方提供的install 文档) 
    ./configure 
    make 
    sudo make install

    6. 运行 ldconfig ,至此完成。

    简单的例子测试一下libpcap :
    //device.c 
    #include <stdio.h>
    int main(int argc,char *argv[])

    char *dev, 
    errbuf[PCAP_ERRBUF_SIZE]; 
    dev=pcap_lookupdev(errbuf); 
    if(dev==NULL)

    printf(stderr,"couldn't find default device: %s/n",errbuf); 
    return(2); 

    printf("Device: %s/n",dev); 
    return(0); 

    编译指令:gcc -o device device.c -lpcap 
    备注:编译时要使用libpcap 的参数 -lpcap ,否则会提示“pcap_lookupdev 未定义的引用” 的错误。
    运行指令:./device

    在QT creator 中使用libpcap

    编写代码时在头文件中引入 pcap.h 即可 . 编译时需要在 .pro 工程文件中加入选项

    LIBS   += -L/usr/local/lib /                

                                -lpcap

  • 相关阅读:
    2016年3月至9月随笔
    带大三个hybird app项目的设计管理笔记
    小议新人的培养
    GitHub上整理的一些工具,求补充——转的,先mark了
    AutoMapper(一)——实现数据契约和实体类之间的转换
    GitHub上整理的一些工具
    我最常用的7个Web在线工具
    在线团队协作工具+在线UML工具
    轻量级SaaS在线作图工具(继之前介绍后完整介绍)
    分享自己使用的在线UML画图工具
  • 原文地址:https://www.cnblogs.com/zhangdaicong/p/7709998.html
Copyright © 2020-2023  润新知