• CozyShark开发日志 1章节


    WinPcap是一个基于Win32平台用于捕获网络数据包并进行分析的开源库。

    本阶段枚举出当前设备列表,输出设备信息之后,输入网卡的序号进行监听。

    通过pcap_open()函数打开选择的设备。

    • snaplen设为0xFFFF,比所有的MTU值都大,所以我们可以保证获取所有数据。
    • flags设为混杂模式,用来捕获所有的数据包。
    • to_ms设置为1000,表示超时时间为1s。

    WinPcap提供了两种方式来获取数据包

    1. 使用pcap_dispatch()或pcap_loop(),通过提供的回调函数获取数据包,
    2. 使用pcap_next_ex()获取数据包

    若采用回调函数的方式获取数据包,回调函数会在收到每个新的数据包并收到一个通用状态时被调用。
    回调函数的类型为:

    void(*)(u_char *user, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data)

    回调函数有三个参数:

    • user为用户自定的参数,可以用来保存一些附加信息
    • pkt_header结构体中有一些信息,如数据包的长度、数据包的时间戳
    • pkt_data是收到的数据包

    回调的方式并不一定适合所有的场景,WinPcap提供了pcap_next_ex()函数,用来获取数据包。
    只有当使用了pcap_next_ex()函数,才能收到一个数据包,代码中就采用了这样的方式实现Tester。

    本阶段初步实现了使用WinPcap捕获网络设备的数据包,但是还是需要封装一套自己的易用的接口出来才可以。

  • 相关阅读:
    0903编写ssh实现远程执行命令 并解决粘包问题
    学习日记0829 IP协议 子网掩码 端口TCP协议的三次握手 四次挥手 套接字socket
    学习日记0828单例 OSI七层协议
    学习日记0827异常处理 元类 自定义元类 自定义元类来实例化类 属性查找顺序
    函数装饰器
    函数对象
    参数
    函数
    文件操作
    字符编码
  • 原文地址:https://www.cnblogs.com/kingwl/p/5500098.html
Copyright © 2020-2023  润新知