Linux下测试libpcap是否安装成功

序言

安装libpcap之后,如何测试安装是否正确。


  • 桌面或其他位置新建测试源程序

    • touch libpcap_demo.c
  • 编译源文件

    • gedit libpcap_demo.c
    • 输入如下程序并保存
#include <pcap.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    pcap_t *handle;                 /* 会话句柄 */
    char *dev;                      /* 要监听设备 */
    char errbuf[PCAP_ERRBUF_SIZE];  /* 错误字符串 */
    struct bpf_program fp;          /* 过滤器 */
    char filter_exp[] = "port 80";  /* 过滤器表达式 */
    bpf_u_int32 mask;               /* 子网掩码 */
    bpf_u_int32 net;                /* IP地址 */
    struct pcap_pkthdr header;      /* pcap报头 */
    const u_char *packet;           /* 报文 */

    /* 设备定义 */
    dev = pcap_lookupdev(errbuf);
    if (dev == NULL) 
    {
        fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
        return(2);
    }
    /* 设备属性查看 */
    if (pcap_lookupnet(dev, &net, &mask, errbuf) == -1) 
    {
        fprintf(stderr, "Couldn't get netmask for device %s: %s\n", dev, errbuf);
        net = 0;
        mask = 0;
    }
    /* 混杂模式打开会话 */
    handle = pcap_open_live(dev, BUFSIZ, 1, 1000, errbuf);
    if (handle == NULL) 
    {
        fprintf(stderr, "Couldn't open device %s: %s\n", dev, errbuf);
        return(2);
    }
    /* 编辑使用过滤器 */
    if (pcap_compile(handle, &fp, filter_exp, 0, net) == -1) 
    {
        fprintf(stderr, "Couldn't parse filter %s: %s\n", filter_exp, pcap_geterr(handle));
        return(2);
    }
    if (pcap_setfilter(handle, &fp) == -1) 
    {
        fprintf(stderr, "Couldn't install filter %s: %s\n", filter_exp, pcap_geterr(handle));
        return(2);
    }
    /* 抓包单个数据包 */
    packet = pcap_next(handle, &header);
    /* 输出其长度 */
    printf("Jacked a packet with length of [%d]\n", header.len);
    /* 关闭会话 */
    pcap_close(handle);
    return(0);
}
  • 源文件编译
    • gcc -o libpcap_demo.c libpcap_demo -lpcap
    • 注意不能少了-lpcap,链接库文件,否则无法正确链接(pcap的函数无法正常使用,如下图)

  • 测试执行
    • sudo ./libpcap_demo



2017.05.22

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值