命令语法
tcpdump [选项] <抓取的网口> [选项]
选项 | 功能 |
---|---|
-D | 列出所有可抓取的网口 |
-i | 指定抓取的网口,any表示所有网口 |
-n | 不会解析主机名 |
-nn | 不会解析主机名或端口,例如ssh直接输出为:22 |
-e | 显示连接层级的协议报头 |
-w | 导出为文件,后缀一般为 .cap |
-c | 可以指定抓取数据包的数量 |
-l | 指定行缓冲模式,可以让输出立即发送到管道命令 |
-C | 指定数据包缓冲模式,可以让输出立即发送到管道命令 |
-s | 抓包大小。 -s 0会将大小设置为无限制 |
-v | 详细使用 (-v) 或 (-vv) 会增加输出中显示更详细信息,通常会显示更多协议特定的信息 |
-A | 输出中包含抓包的 ascii 字符串 |
-X | 同时显示十六进制输出和 ascii 字符串 |
host | 指定抓取的主机,包括 src host 和 dst host |
src host | 源主机 |
dst host | 目标主机 |
and | 用来衔接多个选项 |
&& | 与and用法一致 |
or | 用来并列多个选项 |
|| | 与or用法一致 |
tcp | TCP协议 |
udp | UDP协议 |
port | 指定抓取的端口号 |
not | 不抓取指定的主机/协议/端口,如 not port 22 :不抓取22号端口的数据包 |
! | 与not用法一致 |
proto | 指定抓取的协议号,如:抓取UDP流量时,写作 proto 17 |
常用命令示例
列出所有可抓取的网口
tcpdump -D
抓取ens33网口,过滤所有数据包
tcpdump -nn -i ens33
抓取ens33网口,过滤 ping 包
tcpdump -nn -i ens33 icmp
抓取所有网口,过滤源目主机为192.168.1.1的ping包
tcpdump -nn -i any host 192.168.1.1 and icmp
抓取所有网口,过滤源主机为192.168.1.1,目的主机位192.168.1.2的ping包
tcpdump -nn -i any src 192.168.1.1 and dst 192.168.1.2 and icmp
抓取所有网口,过滤源主机为192.168.1.1 & 端口号不是tcp22的数据包
tcpdump -nn -i any src host 192.168.1.1 and not tcp port 22
抓取所有网口,过滤目的主机为192.168.1.2 & 端口号不是udp53的数据包
tcpdump -nn -i any dst host 192.168.1.2 and not udp port 53
抓取100个ens33网卡的数据包
tcpdump -c 100 -i ens33
导出为文件
tcpdump -c 100 -i ens33 -w ens33.cap
查看导出的文件中的tcp协议22端口的流量
tcpdump -nr ens33.cap tcp port 22
提取 HTTP 请求的 URL(如果服务不在80 端口,则需要指定端口)
tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"