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

  • 相关阅读:
    过滤器
    HTTP会话的使用和管理
    Servlet技术(下)
    Servlet技术(上)
    Web运作原理
    Tomcat简介
    Java Web应用
    java io
    【node.js】node.js安装yarn报错:Could not create the Java Virtual Machine
    【微信小程序】微信小程序页面url传参,使用JSON.parse报错Unexpected end of JSON input
  • 原文地址:https://www.cnblogs.com/kingwl/p/5500098.html
Copyright © 2011-2022 走看看