一、概述
tcpdump可以将网路中传送的数据包的“头”完全截获下来提供分析。支持网络层、协议、主机、网络或端口的过滤,并提供and、or、not等。
二、使用
默认启动
tcpdump
普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。
监视指定的网络接口的数据包
tcpdump -i eth1
如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0
监视指定主机的数据包
tcpdump host sundown
打印所有进入或离开sundown的数据包
tcpdump host 192.168.5.163
截获指定ip的主机收到发出的所有数据包
tcpdump host A and \(B or C\)
打印A与B或者与C之间通信的数据包(同样适用IP)
tcpdump ip host A and not B
打印A与任何其他主机之间通信的IP数据包,但不包括与B之间的数据包
tcpdump ip host IP1 and ! IP2
获取主机ip1除了和主机ip2之外所有主机通信的ip包
tcpdump -i eth0 src host hostname
获取主机hostname发送的所有数据
tcpdump -i eth0 dst host hostname
监视所有送到主机hostname的数据包
监视指定主机和端口的数据包
tcpdump tcp port 23 and host 210.27.48.1
获取主机210.27.48.1接受和发出的telnet包
tcpdump udp port 123
对主机的udp 123端口进行监视(123为ntp的服务端口)
tcpdump与wireshark
tcpdump抓包,wireshark解析
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.1/24 -w ./target.cap
tcp: ip icmp arp rarp 和tcp、udp、icmp这些选项都要放在第一个参数位置,用来过滤数据报的类型
-i eht1: 只抓经过接口eht1的包
-t : 不显示时间戳
-s 0 : 抓取数据包时默认抓取长度为68字节。加上-s 0后可以抓到完整的数据包
-c 100 :只抓取100个包
dst port ! 22:不抓取目标端口是22的数据包
src net 192.168.1.1/24 :数据包的源网络地址为192.168.1.1/24
-w ./target.cap : 保存成cap文件,方便wireshark分析
抓取HTTP包
tcpdump -XvvennSs 0 -i eht0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745为“GET”前两个字母“GE”,0x4854为“HTTP”前两个字母“HT”
tcpdump对截获的数据并没有彻底解析,使用-w参数保存用wireshark解析