tcpdump命令是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w
选项将数据包保存到文件中,结合wireshark等网络封包分析软件使用。
tcpdump常用参数:
-n 不把主机的网络地址转换成名字;
-v 输出更多的信息;(tcpdump的详细信息有三个等级:-v,-vv,-vvv)
-c <数据包数目> 指定抓包的数量;例,tcpdump -c 3,抓取3个数据包后停止。
-i <网络接口> 抓取指定网络接口的数据包,如果不指定tcpdump默认会选择最低编号的网络接口eth0;(在大多数linux中,any 这个接口用来监听所有接口的数据,例,tcpdump -i any)
-w <文件> 将抓取的数据包写入文件;例,tcpdump -w ./tcpdump.pcap
-r <文件> 读取文件内容;例,tcpdump -r ./tcpdump.pcap
注意:“-w”保存的文件,直接用cat等工具查看时时乱码,必须用“-r”查看!还有,“-w”保存的文件最好保存为".pcap"文件,这样便于使用wireshark分析保存的数据包。 如果只是为了保存抓取的数据包,方便自己查看,请用 重定向 符号,例:tcpdump -c 3 > log.txt。
-s <数据包大小> 指定每个抓取的数据包的大小;
-A 封包的内容以ASCII显示,通常用来抓取网页封包;
tcpdump一些常用命令:
tcpdump host 10.0.01 只抓取源和目的IP为10.0.01的数据包;
tcpdump [src|dst] host 10.0.01
tcpdump -c 3 ‘(port 22 and port 80) host 10.0.01‘ 或 tcpdump -c 3 ‘(prot 22 && port 80) host 10.0.01‘ 抓取源和目的IP为10.0.01的主机的22端口和80端口的数据包;
tcpdump -c 3 host ! 10.0.01 不抓取源和目的IP 为10.0.01的数据包;
tcpdump -c 3 [udp|icmp|...] 抓取特定协议的数据包。