zoukankan      html  css  js  c++  java
  • pcap文件格式

     

    pcap文件格式

    pcap文件格式是bpf保存原始数据包的格式,很多软件都在使用,比如tcpdump、wireshark等等,
    了解pcap格式可以加深对原始数据包的了解,自己也可以手工构造任意的数据包进行测试。
     
    pcap文件的格式为:
    文件头 24字节
    数据包头 + 数据包 数据包头为16字节,后面紧跟数据包
    数据包头 + 数据包 ......
    pcap.h里定义了文件头的格式
    struct pcap_file_header {
    bpf_u_int32 magic;
    u_short version_major;
    u_short version_minor;
    bpf_int32 thiszone; 
    bpf_u_int32 sigfigs; 
    bpf_u_int32 snaplen; 
    bpf_u_int32 linktype; 
    };
    看一下各字段的含义:
    magic: 4字节 pcap文件标识 目前为“d4 c3 b2 a1”
    major: 2字节主版本号 #define PCAP_VERSION_MAJOR 2
    minor: 2字节次版本号 #define PCAP_VERSION_MINOR 4
    thiszone:4字节时区修正 并未使用,目前全为0
    sigfigs: 4字节精确时间戳 并未使用,目前全为0
    snaplen: 4字节抓包最大长度如果要抓全,设为0x0000ffff(65535),
    tcpdump -s 0就是设置这个参数,缺省为68字节
    linktype:4字节链路类型 一般都是1:ethernet
     
    | magic |major | minor | thiszone | sigfigs | snaplen | linktype |
    | d4 c3 b2 a1 | 02 00 | 04 00 | 00 00 00 00 | 00 00 00 00 | ff ff 00 00 | 01 00 00 00 |
     
    数据包头的格式
    struct pcap_pkthdr {
    struct timeval ts; 
    bpf_u_int32 caplen; 
    bpf_u_int32 len; 
    };
    struct timeval {
    long tv_sec; 
    suseconds_t tv_usec; 
    };
    ts: 8字节 抓包时间 4字节表示秒数,4字节表示微秒数
    caplen:4字节 保存下来的包长度(最多是snaplen,比如68字节)
    len: 4字节数据包的真实长度,如果文件中保存的不是完整数据包,可能比caplen大
     
    了解了pcap文件格式,就可以自己手工构造任意数据包了,可以以录好的包为基础,
    用十六进制编辑器打开进行修改。
  • 相关阅读:
    Pandas也能轻松绘图,简单而又漂亮
    笔试题: 二叉排序数左移k个
    补题next_permutation
    从HTTP到HTTPS
    HTTP首部字段详解
    HTTP请求方法及响应状态码详解
    HTTP报文格式详解
    TCP/IP网络基础
    Netty学习笔记
    ZooKeeper学习笔记
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4067058.html
Copyright © 2011-2022 走看看