zoukankan      html  css  js  c++  java
  • 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捕获网络设备的数据包,但是还是需要封装一套自己的易用的接口出来才可以。

  • 相关阅读:
    改写历史,永久删除git库的物理文件
    双调排序
    GitHub从无到有
    Nginx的安装与基本应用
    Django从无到有的艰苦历程
    pycharm 相关设置问题
    ORM介绍
    Django中的过滤器
    FBV和CBV的差异
    django中models field详解
  • 原文地址:https://www.cnblogs.com/kingwl/p/5500098.html
Copyright © 2011-2022 走看看