tcpdump文件格式分析

tcpdump命令是linux下很常用的抓包命令。使用-w选项可以把抓包的数据记录到文件。那么这个文件的格式是什么样的呢?

首先我们抓几个包试试
tcpdump -w test.dump -c 5
其中-c 5表示抓5个包

使用十六进制查看下内容

0000000: d4 c3 b2 a1 02 00 04 00 00 00 00 00 00 00 00 00
0000010: 60 00 00 00 01 00 00 00 ac a5 ac 54 4b 6b 01 00
0000020: 60 00 00 00 ba 00 00 00 00 19 e7 32 a1 c0 d4 ae
0000030: 52 b2 d1 e7 08 00 45 10 00 ac 7e cf 40 00 40 06
0000040: a0 e0 ac 10 97 5a c0 a8 16 79 e2 23 5c 59 52 03
0000050: df ce b4 d3 13 90 50 18 00 4c 1b 2b 00 00 09 0a
0000060: 61 a6 ca 3d 7d 23 71 7a db 45 19 df 43 7d 69 a3
0000070: bc 8a 27 9a bb 5e cb b6 f6 74 cd c5 d2 1f 97 74
0000080: 31 27 76 14 68 f0 27 ca ac a5 ac 54 0b 6d 01 00
0000090: 3c 00 00 00 3c 00 00 00 d4 ae 52 b2 d1 e7 00 19
00000a0: e7 32 a1 c0 08 00 45 00 00 28 0c e1 40 00 3d 06
00000b0: 16 63 c0 a8 16 79 ac 10 97 5a 5c 59 e2 23 b4 d3
00000c0: 13 90 52 03 e0 52 50 10 40 29 1b e8 00 00 00 00
00000d0: 00 00 00 00 ac a5 ac 54 91 6d 05 00 60 00 00 00
00000e0: ea 00 00 00 ff ff ff ff ff ff 00 19 b9 2c f1 c7
00000f0: 08 00 45 00 00 dc 00 00 40 00 40 11 b2 80 ac 10
0000100: 97 70 ac 10 97 ff 00 8a 00 8a 00 c8 f6 0e 11 0a
0000110: 59 06 ac 10 97 70 00 8a 00 b2 00 00 20 45 4d 45
0000120: 50 45 44 45 42 45 4d 45 49 45 50 46 44 46 45 43
0000130: 41 43 41 43 41 43 41 43 41 43 41 41 41 00 20 45
0000140: 4e 46 4a 45 ac a5 ac 54 28 d6 09 00 3c 00 00 00
0000150: 3c 00 00 00 01 80 c2 00 00 00 00 19 e7 32 a1 91
0000160: 00 27 42 42 03 00 00 02 02 3c 50 01 00 19 e7 32
0000170: a1 80 00 00 00 00 50 01 00 19 e7 32 a1 80 80 11
0000180: 00 00 14 00 02 00 0f 00 00 00 00 00 00 00 00 00
0000190: ac a5 ac 54 06 7c 0c 00 3c 00 00 00 3c 00 00 00
00001a0: ff ff ff ff ff ff 74 86 7a d5 12 90 08 06 00 01
00001b0: 08 00 06 04 00 01 74 86 7a d5 12 90 ac 10 97 29
00001c0: 00 00 00 00 00 00 ac 10 97 29 00 00 00 00 00 00
00001d0: 00 00 00 00 00 00 00 00 00 00 00 00            
  • 0-3是一个四字节常数,主机字节序为0xA1B2C3D4,我们称之为 TCPDUMP_MAGIC
  • 4-5是一个两字节常数,主机字节序为0x0002,表示主版本号
  • 6-7是一个两字节常数,主机字节序为0x0004,表示次版本号
  • 8-11是一个四字节常数,全为0,表示时区
  • 12-15是一个四字节常数,全为0,表示时间戳精度
  • 16-19是一个四字节常数,主机字节序为0x00000060,表示每个包抓包大小,默认为96字节,可以通过-s选项设置
  • 20-23是一个四字节常数,主机字节序为0x00000001,表示数据链路层类型,一般是1,表示以太帧

  • 前24个字节是tcpdump文件的头部,一般是固定的内容

  • 从第25字节开始,就是每一个包的信息。依次为:
    秒级时间戳(4字节)、微秒时间戳(4字节)、本次记录的数据包长度(4字节)、实际数据报长度(4字节)、二层报字节(字节数等于本次记录的数据报长度)
  • 其中时间戳、长度等需要转化为主机字节序才是实际的值。
    二层报字节完毕后立即开始下一个包的信息,即从秒级时间戳开始写入下一个包的记录时间、长度和内容等信息。
  • 上例中,第一个包的时间戳为ac a5 ac 54,转为主机字节序为
    54 ac a5 ac, 十进制数为1420600748,即2015-01-07 11:19:08微秒时间戳为4b 6b 01 00,转为主机字节序并十进制后为93003,所以第一个包的时间戳就是2015-01-07 11:19:08.93003
  • 第一个包的记录长度为60 00 00 00,即96字节,实际长度为ba 00 00 00,即186字节,表示第一个包比较大,只记录了前96字节。长度信息之后的96字节就是抓到的二层数据报内容。
  • 第二个数据报是在第一个包内容记录到96字节之后,也是从时间戳开始,秒级时间戳和微秒时间戳分别为ac a5 ac 54 0b 6d 01 00
    2015-01-07 11:19:08.93451,记录的长度和实际长度均为3c 00 00 00,即60字节。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值