常用选项:
-s :指定监听的数据包大小。
-c:指定要抓取的包的最终数量。
-i:指定tcpdump要监听的接口。
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n之外,还把端口显示为数值。
-w:指定监听数据包写入文件。
常用输出项:
-XX:以16进制和ASCII方式输出包的头部数据。
-vvv:很详细的输出(想要详细的信息加上去就行)。
-q:快速打印输出。
其他功能选项:
-D:列出可用于抓包的接口。(eth0、any、lo等)
tcpdump表达式:
基本表达式为:
proto dir + type ID
proto:
tcp、udp、arp、icmp、ip、ether等。未指定则匹配所有可能。
dir:
src、dst、src or dst、src and dst。默认为src or dst。
type:
host、net、port等。
常用的例子:
1.抓主机上环回的包
tcpdump -i lo
2.抓主机hostname发送的所有数据
tcpdump src host hostname
3.监视所有发到主机hostname的数据包
tcpdump dst host hostname
4.抓指定数量(10个)的ping包
tcpdump -c 10 -nn -i eth0 icmp
5.对某个端口进行监视
tcpdump tcp(协议,不填则匹配所有) port 22(端口号)
6.解析数据包
tcpdump -c 10 -XX -vvv -nn -i eth0
高级用法:(结合TCP头部结构来精确设置对应的位)
1.如果要监听某几台主机数据包 例如10.10.10.10、20.20.20.20、30.30.30.30
tcpdump host 10.10.10.10 and (20.20.20.20 or 30.30.30.30)
2.如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包
tcpdump ip host 210.27.48.1 and ! 210.27.48.2**重点内容**
3.如果获取10.10.10.10:80发出去的数据包
tcpdump -i eth0 src host 10.10.10.10 and src port 80
4.如果获取发往10.10.10.10:80的数据包
tcpdump -i eth0 dst host 10.10.10.10 and dst port 80
5.只抓取syn包
tcpdump -i eth0 tcp[13]==2
6.只抓取fin包
tcpdump -i eth2 tcp[13]==1
7.只抓取synack包
tcpdump -i eth2 tcp[13]==18
8.抓取10.10.10.10:80的syn、synack包
tcpdump -i eth2 tcp[13]==2 or tcp[13]==18 and port 80 and host 10.10.10.10