tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析,用于网络分析和问题排查。
一、举例:
1.如果想要获取主机192.168.228.246接收或发出的ssh包,并且不转换主机名使用如下命令:#tcpdump -nn -n src host 192.168.228.246and port 22and tcp
2.获取主机192.168.228.246接收或发出的ssh包,并把mac地址也一同显示:# tcpdump -e src host 192.168.228.246 and port 22 and tcp -n -nn
3.过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头:tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24
4.过滤源主机物理地址为XXX的报头:tcpdump ether src 00:50:04:BA:9B and dst
5.过滤源主机192.168.0.1和目的端口不是telnet的报头,并导入到tes.t.txt文件中:Tcpdump src host 192.168.0.1 and dst port not telnet -l > test.txt
6.以 IP 与 Port Number 捉下 eth0 这个网卡上的数据包:
tcpdump -i eth0 -nn
7.只取21的数据包:
tcpdump -i eth0 -nn port 21
8.如果我们只需要列出送到80端口的数据包,用dst port;如果我们只希望看到返回80端口的数据包,用src port。#tcpdump –i eth0 host hostname and dst port 80 目的端口是80或者#tcpdump –i eth0 host hostname and src port 80 源端口是80 一般是提供http的服务的主机
9. and/or/not的使用:
and 或 or 或 not#tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80
10.可以把结果放在一个cap文件中:
tcpdump -i eth0 -c 10 tcp and port 22 -w 1.cap
这里如果需要截取完整的内容最好加上s0:tcpdump -nn -s0 -i eth0 -c 10 tcp and port 22 -w 1.cap
查看cap文件内容:tcpdump -r 1.cap这个cap文件里面是一些数据文件内容而不是数据流向
如果要抓包的流向:tcpdump -i eth0 -c 10 tcp and port 22 >1.cap
二、格式:
tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae][-qX] [-r 文件] [所欲捕获的数据内容]
三、参数:
-nn,直接以 IP 及 Port Number 显示,而非主机名与服务名称。-i,后面接要「监听」的网络接口,例如 eth0, lo, ppp0 等等的接口。-w,如果你要将监听所得的数据包数据储存下来,用这个参数就对了。后面接文件名。-c,监听的数据包数,如果没有这个参数, tcpdump 会持续不断的监听,直到用户输入 [ctrl]-c 为止。比如,我只抓100个包:tcpdump -c 100 -nn-A,数据包的内容以 ASCII 显示,通常用来捉取 WWW 的网页数据包资料。-e,使用资料连接层 (OSI 第二层) 的 MAC 数据包数据来显示。-q,仅列出较为简短的数据包信息,每一行的内容比较精简。-X,可以列出十六进制 (hex) 以及 ASCII 的数据包内容,对于监听数据包内容很有用。-r,从后面接的文件将数据包数据读出来。那个「文件」是已经存在的文件,并且这个「文件」是由 -w 所制作出来的。所欲捕获的数据内容:我们可以专门针对某些通信协议或者是 IP 来源进行数据包捕获。那就可以简化输出的结果,并取得最有用的信息。常见的表示方法有。‘host foo‘, ‘host 127.0.0.1‘ :针对单台主机来进行数据包捕获。‘net 192.168‘ :针对某个网段来进行数据包的捕获。‘src host 127.0.0.1‘ ‘dst net 192.168‘:同时加上来源(src)或目标(dst)限制。‘tcp port 21‘:还可以针对通信协议检测,如tcp、udp、arp、ether 等。除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 ‘not ‘ ‘! ‘, 与运算是‘and‘,‘&&‘;或运算 是‘or‘ ,‘||‘;
-s截取报文的字节。snaplen参数值为0,即是设置为默认值65535。