tcpdump用法示例

Tcpdump能够捕获网络接口上的数据包,并使用表达式匹配过滤数据,可将数据包保存到文件,也可以从数据文件中读取。

tcpdump

sudo tcpdump

常用选项

查看往返于端口80的IPv4 HTTP数据包

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

查看HTTPS流量

tcpdump -nnSX port 443

查看指定网卡流量

tcpdump -i eth0

查看指定主机

tcpdump host <hostname>

tcpdump host 1.1.1.1
sudo tcpdump host localhost
tcpdump host 1.1.1.1 and 1.1.1.2

按源和目标过滤

tcpdump src 1.1.1.1 
tcpdump dst 1.0.0.1
sudo tcpdump src 1.1.1.1 and dst 1.0.0.1

查找网络数据包

tcpdump net 1.2.3.0/24

用十六进制输出数据包内容

tcpdump -c 1 -X icmp

查看特定端口相关的流量

tcpdump port 3389 
tcpdump src port 1025

显示指定协议的流量

tcpdump icmp

显示IP6流量

tcpdump ip6

使用端口范围查找流量

tcpdump portrange 21-23

根据数据包大小查找流量

tcpdump less 32 
tcpdump greater 64 
tcpdump <= 128

写入文件

tcpdump port 80 -w capture_file

读取文件

tcpdump -r capture_file

tcpdump选项

-X : 用十六进制和ascii码显示数据包的内容。

-XX : 与-X相同,显示以太网报头。

-D : 显示可用接口列表

-l : 行可读输出(保存时查看,或发送到其他命令时查看)

-q : 静默模式。

-t : 可读的时间戳格式输出。

-tttt : 最大限度可读时间戳输出。

-i eth0 :监听eth0接口。

-vv : 冗长的输出(更多的v表示更多的输出)。

-c : 得到x个包就停止。

-s : 定义捕获的大小,以字节为单位。-s0表示获取所有内容。

-S : 打印绝对序列号。

-e : 获取以太网报头。

-q : 显示较少的协议信息。

-E :使用加密密钥解密IPSEC通信流。

组合选项

并且:

and or &&

或者:

or or ||

排除:

not or !

原始输出

tcpdump -ttnnvvS

来自特定IP发往特定端口

tcpdump -nnvvS src 10.5.2.3 and dst port 3389

从一个网络到另一个

tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

到特定IP的非ICMP流量

tcpdump dst 192.168.0.2 and src net and not icmp

来自非特定端口的主机的流量

tcpdump -vv src mars and not dst port 22
tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)'

隔离TCP标志,过滤器隔离设置了特定TCP标志的数据包。

tcpdump 'tcp[13] & 4!=0'
tcpdump 'tcp[tcpflags] == tcp-rst'

隔离TCP SYN标志

tcpdump 'tcp[13] & 2!=0'
tcpdump 'tcp[tcpflags] == tcp-syn'

隔离同时设置SYN和ACK标志的数据包

tcpdump 'tcp[13]=18'

隔离TCP URG标志

tcpdump 'tcp[13] & 32!=0'
tcpdump 'tcp[tcpflags] == tcp-urg'

隔离TCP ACK标志

tcpdump 'tcp[13] & 16!=0'
tcpdump 'tcp[tcpflags] == tcp-ack'

隔离TCP PSH标志

tcpdump 'tcp[13] & 8!=0'
tcpdump 'tcp[tcpflags] == tcp-psh'

隔离TCP FIN标志

tcpdump 'tcp[13] & 1!=0'
tcpdump 'tcp[tcpflags] == tcp-fin'

查找HTTP User Agents

tcpdump -vvAls0 | grep 'User-Agent:'

GET请求明文

tcpdump -vvAls0 | grep 'GET'

HTTP Host Headers

tcpdump -vvAls0 | grep 'Host:'

HTTP Cookies

tcpdump -vvAls0 | grep 'Set-Cookie|Host:|Cookie:'
SSH连接
tcpdump 'tcp[(tcp[12]>>2):4] = 0x5353482D'

DNS流量

tcpdump -vvAs0 port 53

FTP流量

tcpdump -vvAs0 port ftp or ftp-data
NTP流量
tcpdump -vvAs0 port 123

明文密码

tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -lA | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd= |password=|pass:|user:|username:|password:|login:|pass |user '

使用evil bit查找流量

tcpdump 'ip[6] & 128 != 0'