Pcap文件的magic_number

1. 简述

pcap文件头中的magicNum是来标识pcap文件文件头和包头字节序和应用是否一致的。
在标准情况下为0xa1b2c3d4。如果相反则说明需要调换字节序。

一般格式

Global Header
Packet Header
Packet Data
Packet Header
Packet Data
....
  • pcap文件头格式
typedef struct pcap_hdr_s {
          guint32 magic_number;   /* magic number */
          guint16 version_major;  /* major version number */
          guint16 version_minor;  /* minor version number */
          gint32  thiszone;       /* GMT to local correction */
          guint32 sigfigs;        /* accuracy of timestamps */
          guint32 snaplen;        /* max length of captured packets, in octets */
          guint32 network;        /* data link type */
  } pcap_hdr_t;
  • pcap报文头格式
typedef struct pcaprec_hdr_s {
          guint32 ts_sec;         /* timestamp seconds */
          guint32 ts_usec;        /* timestamp microseconds */
          guint32 incl_len;       /* number of octets of packet saved in file */
          guint32 orig_len;       /* actual length of packet */
  } pcaprec_hdr_t;

2. magicNum对照

不同应用也可以自己写入不同的magicNum,这里说的主要是pcap自己的格式。

2.1 pcapng

pcapng即pcap next generation,s是pcap新的格式扩展。
它对应的magic number为0a0d0d0a

2.2 mpcap

magicNum为0xa1b2cd34, 包头也得到了相应的扩充,多了八个字节。

结构体定义就变成了这样

typedef struct pcaprec_modified_hdr {
    struct pcaprec_hdr_s pcaphdr;	/* the regular header */
    uint32_t ifindex;	/* index, in *capturing* machine's list of
				   interfaces, of the interface on which this
				   packet came in. */
    uint16_t protocol;	/* Ethernet packet type */
    uint8_t pkt_type;	/* broadcast/multicast/etc. indication */
    uint8_t pad;		/* pad to a 4-byte boundary */
} mpcaprec_hdr_t;

2.3 npcap

支持纳妙捕获精度的时间戳,Libpcap 1.5之后的可以读取这种文件。
对应的magic number为0xa1b23c4d

2.4 其他

  • Nokia pcap
  • AIX
  • IXIA

有些应用会更改这个pcap的值,就参考tsharktshark magic number了。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值