cap文件的格式说明

系统 1509 0

前面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包。

 

cap文件的格式说明

红色框内为 pcap_file_header 

绿色框内为 pcap_pkthdr

后面为包内数据

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

 

cap文件的格式说明


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论