etherreal 的文件头格式
关键词: ethreal 文件头
闲来无事分析了一下 etherreal,也就是现在改名成了 wireshark 的软件的文件头。
不过后来找了一下原来网上就有。
怕费事的看看这个链接。
http://lists.linux-wlan.com/pipermail/linux-wlan-devel/2003-September/002701.html
下面是我的分析过程,之前分析 hca 的比这个麻烦多了
1
最开始有 40 个字节不知道是什么,
然后接下来是第一个报文的以太网地址开始(对比 vi 和 ethreal 的显示)
第一个报文完了之后有 16 个字节的空档,后面是第二个报文的以太网地址。
中间这 16 个字节的含义是
前 8 个字节未知,后 8 个字节开始的第一个字节是下一个报文大小。也可能这连续的两个字节都存放的是报文大小,一个字节太小,256,short 可存 65535
个字节的大小。
这里有一个问题是,后 8 个字节开始存放的是下一个报文的大小,比如这几个字节在 vi 里面显示出来是 d301 0000 d301 0000,这表示下一个报文的大小是
467 字节,这里字节序需要调整一下,应该是 0x01d3 0x0000 即 0x000001d3 ,这里看了几个报文都是重复的。
第一个 sip 报文与它前面的一个报文中间的数据是
166c 6145 2311 0400 d301 0000 d301 0000
标明这个 sip 报文的大小为 0x000001d
比如我当前看的这个报文的第一个报文和第二个报文中间的间隔数据为
126c 6145 c5c7 0a00 a600 0000 a600 0000
标明第二个报文的大小为 0x000000a6 大小为 116 字节。
0x000a=10
0x000ac7c5=706501
再分析前面四个字节。注意字节序
这里可能存的是时间,获取到的可能是 gettimeofday,是一个整形的值,而不是格式化的时间。
第二个报文和第三个报文之间的间隔为
126c 6145 b755 0c00 5c00 0000 5c00
标明第三个报文大小为 92 字节 0x0000005c
而 ethereal 中显示第二个报文和第三个报文的时间间隔为
第二个报文的起始时间为 0.301700
第三个报文的起始时间为 0.403574
这里基本判断是时间,如果是 gettimeofday 的话,
存放时间是一个结构
strut timeval {
long tv_sec; /* 秒数 */
long tv_usec; /* 微秒数 */
评论0