查看: 7390|回复: 0

CAP文件格式

[复制链接]
发表于 2008-5-28 09:43:47 | 显示全部楼层 |阅读模式
CAP文件格式

1、文件头
00000000h: 58 43 50 00 30 30 32 2E 30 30 32 00 98 5E 29 45 ;
XCP.002.002
00000010h: FD 04 00 00 00 00 80 00 80 00 00 00 2D 37 3D 02 ;
00000020h: 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 ;
00000030h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;
00000040h: 00 00 00 00 00 00 00 00 14 00 04 00 99 9E 36 00 ;
00000050h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;
00000060h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;
00000070h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;

文件类型标识  00-02  3字节, 为XCP
版本号: 04-0A  7字节
开始抓包时间 0C-0F  4字节 time_t类型的值
与包数有关的值 10-13,4字节,如果总包数为“0004FD”,其位置上的值如图,为FD 04 00 00;
与包总长度有关的值,4字节,如果字节数为“00C1F6D”则其位置上的值为6D 1F C1 00;
说明:文件头长128字节,数据域从128字节后开始。
2、数据段

00000080h: 18 2F 00 00 00 00 00 00 3C 00 3C 00 00 00 00 00
00000090h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000a0h: 00 00 00 00 00 00 00 00 FF FF FF FF FF FF 00 40
000000b0h: 9E 00 6A FE 08 06 00 01 08 00 06 04 00 01 00 40
000000c0h: 9E 00 6A FE 0A 02 10 0F 00 00 00 00 00 00 0A 02
000000d0h: 10 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000e0h: 00 00 00 00

微秒数 4字节  从文件头的开始抓包时间开始的微秒数  1微秒=1/1,000,000秒
数据域的长度,指从MAC地址开始算起的长度,即IP包长+14字节,2字节,连续重复两次
目的网卡物理地址  6字节
源网卡物理地址    6字节
INTERNET协议标识  2字节  0806为ARP协议, 0800为IP协议
数据域

说明:
•每个数据段分头和数据域部分,头长度固定为40字节
•数据域的长度表示的是从网卡目的物理地址开始到一个数据段的字节数

1.Ethereal的CAP文件格式说明
        说明:文件头长128字节,数据域从128字节后开始。
        000000a0h: 00 00 00 00 00 00 00 00 FF FF FF FF FF FF 00 40
        数据域的长度 2字节 连续重复两次。
        目的网卡物理地址 6字节。
        每个数据段分头和数据域部分,头长度固定为40字节。
        数据域的长度表示的是从网卡目的物理地址开始到一个数据段的字节数。

2.小弟想用自己的程序把trace到的二进制数据转换成ethereal可以分析的.cap文件,但是不知道如何下手。
文件头格式   
struct   pcap_file_header   {   
            bpf_u_int32   magic;         //libpcap   magic   number.   
            u_short   version_major;     //libpcap   major   version.   
            u_short   version_minor;     //libpcap   minor   version.     
            bpf_int32   thiszone;        //gmt   to   local   correction.     
            bpf_u_int32   sigfigs;      //accuracy   of   timestamps.         
            bpf_u_int32   snaplen;      //length   of   the   max   saved   portion   of   each   packet.      
            bpf_u_int32   linktype;     //data   link   type   (dlt_*).   see   win_bpf.h   for   details.      
  };   

每个包头的格式   
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)     
         };
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表