tcpdump抓包工具
访问量:5145

一、简介

tcpdump命令,是一个网络数据包截取和分析工具,可以将网络中传送的数据包的“头”完全截获下来,且tcpdump可以针对网络层、协议、主机、网络或端口进行过滤操作,同时还提供了and、or、not等逻辑语句来实现组合过滤操作。

二、语法

tcpdump [选项] [参数]

三、常用选项

-a     尝试将网络地址和广播地址转换为名称    
-A     以 ASCII 显示每个信息包(去掉它的链接级别的头)。方便捕获 Web 页面。    
-B buffer_size 指示缓冲区大小(以千字节计)。将接受较小的值。如果缓冲区大小小于 BPF 设置的最低值,那么将忽略实际缓冲区大小并使用伯克利数据包过滤器 (BPF) 设置的值。如果未指定 -B 选项,那么缓冲区大小缺省为 32,768。
-c	在接收 Count 信息包后退出。
-C file_size	在将原始信息包写入 savefile 之前,检查文件当前是否大于 file_size,如果确实如此,那么关闭当前的 savefile 并打开新的 savefile。第一个 savefile 之后的 savefile 拥有使用 -w 标志指定的名称,名称后带有从 2 开始并连续递增的数字。file_size 的单元以百万字节为单位(1,000,000 字节,而不是 1,048,576 字节)。
-d	将编译过的信息包匹配代码转储至标准输出,然后停止。
-D	显示系统上可用、并且 tcpdump 可以在其中捕获信息包的网络接口的列表。显示每个网络接口的数字和接口名称(可能带有此接口的文本描述)。接口名称或数字可以提供给 -i 标志以指定在其上进行捕获的接口。
-dd	将信息包匹配代码作为 C 程序片段进行转储。
-ddd	将信息包匹配代码作为十进制数进行转储(添加在某个计数前面)。
-e	在每一转储行上显示链接级别标题。
-i   <网络界面>:使用指定的网络截面送出数据包;
-F file  使用 file 作为过滤表达式的输入。忽略了命令行上给出的其他表达式。    
-T    强制使用指定类型解释 expression 选择的信息包。当前已知的类型有 cnfp(Cisco 网络流量协议)、rpc(远程过程调用)、rtp(实时应用协议)、rtcp(实时应用控制协议)、snmp(简单网络管理协议)、tftp(次要文件传输协议)、vat(可视音频工具)、和 wb(分布式白板)。    
-t    在每一转储行上省略时间戳记显示。    
-tt    在每一转储行上显示未格式化的时间戳记。    
-ttt    在每一转储行上显示当前行和先前行之间的变化量(以微秒为单位)。    
-tttt    在每一转储行上显示前面带有日期的缺省格式的时间戳记。    
-ttttt    在每一转储行上显示当前行和第一行之间的变化量(以微秒为单位)。    
-u    显示未译码的 NFS 句柄。

四、案例

1、监视指定网络接口的数据包

即监听指定网卡的数据包,若不指定网卡,默认tcpdump只会监视第一个网络接口。如监听 eth0网卡,如下:

tcpdump -i eth0

2、监视指定主机或ip的数据包

格式如下:

tcpdump host hostOrIp

如监听 www.findme.wang 的数据包:

tcpdump host www.findme.wang

这会把和 www.findme.wang 之间来往的所有数据包都抓取到,包含出和入的包。

3、监视指定来源的数据包

格式如下:

tcpdump src host hostOrIp

如下:

tcpdump src host www.findme.wang

上面命令,会抓取来自“www.findme.wang”的所有数据包。

4、监视指定目的地的数据包

格式如下:

tcpdump dst host hostOrIp

如下:

tcpdump dst host www.findme.wang

上面命令,会抓取发给“www.findme.wang”的所有数据包。

5、监视指定端口号的数据包

格式如下:

tcpdump port 8080

6、监视指定传输层协议的数据包

如,监听tcp数据包如下:

tcpdump tcp

如,监听udp数据包如下:

tcpdump udp

7、使用多条件进行过滤

tcpdump支持使用and、or、not来过滤抓取的数据包。比如,监听来自于www.findme.wang的80端口数据包,如下:

tcpdump src host www.findme.wang and port 80

8、设置抓取的数据包个数

tcpdump -c 3

抓取3个数据包就退出。