• 回头再看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

  • 相关阅读:
    JS BOM对象 History对象 Location对象
    JS 字符串对象 数组对象 函数对象 函数作用域
    JS 引入方式 基本数据类型 运算符 控制语句 循环 异常
    Pycharm Html CSS JS 快捷方式创建元素
    CSS 内外边距 float positio属性
    CSS 颜色 字体 背景 文本 边框 列表 display属性
    【Android】RxJava的使用(三)转换——map、flatMap
    【Android】RxJava的使用(二)Action
    【Android】RxJava的使用(一)基本用法
    【Android】Retrofit 2.0 的使用
  • 原文地址:https://www.cnblogs.com/kwingmei/p/3622001.html
Copyright © 2020-2023  润新知