zoukankan      html  css  js  c++  java
  • 回头再看libpcap

    libpcap 之前由于lex yacc 看不下去, 不好的借口(因为我也没有好好看看libpcap的接口设计及使用)

    之后由于很多原因有接触了一下lex yacc (主要是我想写一个解析各种报文的程序,看了一段之后,似乎不适合,可能是理解不深吧)

    回头再看scanner.l 似乎不是那么困难, grammer.y 也不是那么难, libpcap是一个很好的库, 其中内部的虚拟机的设计很是经典,

    值得我们好好看看,学习接口设计, 学习代码...

    理解一个库,看一下简介,即可入手了, 下载,编译,小实例接口一步一步开始了,

    1 使用那个接口

    在linux中用ifconfig即可查看机器上的网口

    传递给程序

    1) 输入

    #include <stdio.h>

    #include <pcap.h> int main(int argc, char *argv[]) {   

      char *dev = argv[1];   

      printf("Device: %s ", dev);   

      return(0);

    }

    2) pcap自己使用第一个
    #include <stdio.h>
    #include <pcap.h>

    int main(int argc, char *argv[])
    {
        char *dev, errbuf[PCAP_ERRBUF_SIZE];

        dev = pcap_lookupdev(errbuf);
        if (dev == NULL) {
            fprintf(stderr, "Couldn't find default device: %s ", errbuf);
            return(2);
        }
        printf("Device: %s ", dev);
        return(0);
    }

    2 Opening the device for sniffing  打开设备准备sniffing

    pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf);

    第一个参数 设备名(如 eth0, wlan0 etc )

    第二个参数 capture 最大的报文字节数

    第三个参数 是否处理 promisc 模式

    第四个参数 指定超时时间(豪秒)

    第五个参数 错误信息的指针 (就是有什么错误就写到这里, 你爱看不看, 也可以传null值)

    3 编译表达式

    int pcap_compile(pcap_t *p, /*handle 上一步的结果 */

    struct bpf_program *fp/*编译之后的结果 */,

    char *str/*输入过滤字符串 ip .. */,

    int optimize,/*是否优化*/

    bpf_u_int32 netmask/*网络的netmask */)

    4 设置过滤器

    int pcap_setfilter(pcap_t *p/*如上*/,

    struct bpf_program *fp/*上一步的结果 */ );

    5 获取一个报文

    u_char *pcap_next(pcap_t *p,/*如上*/

    struct pcap_pkthdr *h/*结果*/ );

    6 关闭

    pcap_close(handle);

    现在去深入

    pcap_compile

    其乐无穷...

     ==>这里有更多

    http://www.tcpdump.org/pcap.html

  • 相关阅读:
    [转]中英文混合字符截取方法样式表解决方法
    Asp.Net小技巧集合
    [分享]整理后的Discuz!NT 2.0项目源码
    [原创]Web2.0之Tag标签原理实现浅析
    [转]CSS完美兼容IE6/IE7/FF的通用hack方法
    [转]常用CSS缩写语法总结
    文本类文件编码转换器及DiscuzNTdotNet2.0 - -
    [驳]ASP伪静态页简单教程
    SELECT中很多程序都不用的NOLOCK“加锁选项”的功能说明
    iOS 微博 OAuth2.0 分享 文字 + 图片 微博的方法
  • 原文地址:https://www.cnblogs.com/kwingmei/p/3622001.html
Copyright © 2011-2022 走看看