• cap文件的格式说明


    前面24个字节是.cap文件的文件头。

    头信息对应的结构体为:
    struct pcap_file_header {
      bpf_u_int32 magic;
      u_short version_major;
      u_short version_minor;
      bpf_int32 thiszone; /* gmt to local correction */
      bpf_u_int32 sigfigs; /* accuracy of timestamps */
      bpf_u_int32 snaplen; /* max length saved portion of each pkt */
      bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */
    };

    cap文件中的linktype很重要,不同的网络环境下抓包,数据帧的帧头是不一样的。
    在局域网内抓包,linktype为1 ( DLT_EN10MB, Ethernet (10Mb) ),以太网的帧头就是两个网卡物理地址;
    如果直接用ADSL拨号上线,则linktype为9 ( DLT_PPP, Point-to-point Protocol),数据帧头为PPP协议。
    关于linktype支持的类型,可以参考pcap-bpf.h中定义的以DLT_开头的宏。


    ========================================================================

    头信息后是顺序的每个数据段的信息,每个数据段中包含抓包时间、包类型等信息,然后是包的内容。
    struct pcap_pkthdr {
    struct timeval ts; /* time stamp */
    bpf_u_int32 caplen; /* length of portion present */
    bpf_u_int32 len; /* length this packet (off wire) */
    };
    ts为抓包的时间;
    caplen和len我发现一般都是一样的。(什么情况下会不一样还没搞懂)

    16字节的数据段头之后就是包的信息了。例子中的包信息是局域网中抓的,所以是以太网帧头,结构体如下:
    struct EthernetPacket
    {
    char MacDst[6]; ///< 目的网卡物理地址
    char MacSrc[6]; ///< 源网卡物理地址
    unsigned short PacketType; ///< 包类型, ip或ARP等
    };
    PacketType=0x0008是IP包,PacketType=0x0608是ARP包。

    红色框内为 pcap_file_header 

    绿色框内为 pcap_pkthdr

    后面为包内数据

    注意两个长度,一个是高位在后,一个是高位在前,后边长度不包含IP头长度

  • 相关阅读:
    用 WP7开发包 安装 WP7程序(XAP文件)
    在Windows 2003,XP上安装Windows Phone 7开发工具
    AutoResetEvent实现单并发控制
    .net源码研究(1)HashTable
    聚簇索引(Clustered Index)和非聚簇索引 (Non Clustered Index)
    信号量(semaphore)支持 多并发(n>=1)同步锁
    AtlasControlToolkit应用点滴(一)
    依赖注入dependency injection
    AtlasControlToolkit.CascadingDropDownNameValue自定义用法
    Thread.Join
  • 原文地址:https://www.cnblogs.com/bloodofhero/p/4147320.html
Copyright © 2020-2023  润新知