tcpdump可以将网路中传送的数据包的“头”完全截获下来提供分析。支持对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来去掉无用的信息。
不带参数的tcpdump会收集网络中所有的信息报头,数据量巨大,所以,必须过滤。
常用选项 | 具体含义 |
---|---|
-i | 指定监听的网络接口。 |
-nn | IP和端口均以数字形式显示。 |
-c | 在收到指定的数据分组后,tcpdump停止,如果没有这个参数,会持续不断的监听用户,直到输入[Ctrl]+C为止。 |
-t | 再输入的每一行不打印时间戳。 |
-q | 只输出较少的协议信息,仅输出协议名称,不输出封包标记信息。 |
-w | FILE直接将分组写入文件中,而不是到stdout。 |
-r | FILE从后面接的文件将数据包数据读出来。 |
-s | 设置数据包抓取长度为len,如果不设置默认为65535字节。 |
-D | 列出可用于抓包的接口。列出接口的数值编号和接口名。可用于-i后。 |
-L | 列出网络接口的已知数据链路。 |
-F | 从文件中读取抓包的过滤表达式,若使用该选项,则命令行中给定的其他表达式都将失效。 |
-A | 数据包的内容以ASCLL显示,通常用来捕捉www的网页数据包资料 |
-X | 数据包内容以十六进制和ASCLL显示。 |
-XX | 比-X输出更详细。 |
tcpdump使用常用的实例
1.针对指定网口抓包(-i)
当我们不加任何选项执行tcpdump时,tcpdump将会抓取通过所有的网口的包。使用-i选项,可以在某个指定的网口抓包。
例子:tcpdump抓取所有通过eth0的包。
命令:tcpdump -i eth0
2.抓取指定数目的包(-c选项)
例子:只针对eth0网口抓2个包。
命令:tcpdump -c 2 -i eth0
3.将抓到的包写入文件中(-w选项)
例子:将抓包记录到一个指定的文件中,以供后续分析
命令:tcpdump -w 2018530.pcap -i eth0
4.读取tcpdump保存文件(-r选项)
对于保存的抓包文件,可以使用-r选项进行读取。
命令:tcpdump -r 2018530.pcap
5.抓包时不进行域名解析(-n选项)
默认情况下,tcpdump抓包结果中将进行域名解析,显示的是域名地址,而不是IP地址,使用-n选项,可以指定显示IP地址。
6.增加抓包时间戳(-tttt选项)
使用-tttt选项,抓包结果将包含抓包日期。
命令:tcpdump -n -tttt -i eth0
7.指定抓包协议类型
tcpdump支持指定协议类型有:ip,ip6,arp,tcp,udp,wlan等。
例子:抓取arp协议的包。
命令:tcpdump -i eth0 arp
8.指定抓包端口
命令:tcpdump -i eth0 port 22
9.抓取特定目标IP和端口的包
网络中的包内容中,包含了源IP地址、源端口、目的IP地址、目的端口,我们可以根据目的IP和端口过滤tcpdump抓包结果。
命令:tcpdump -i eth0 dst 10.70.121.92 and port 22