tcpdump
一、简介
tcpdump是一个网络抓包工具,用于捕获和分析网络数据包。它可以在 Unix/Linux 系统上通过命令行进行使用。tcpdump
能够截获网络传输过程中的数据包,并将这些数据包的内容以及相关的信息显示出来,方便网络管理员和分析师进行网络故障排查、网络性能分析、网络安全监控等任务。
二、参数
-i <interface>: 指定监听的网络接口,例如 eth0、wlan0 等。
示例:tcpdump -i eth0
-n: 以数字形式显示地址,不进行地址解析。
示例:tcpdump -n
-nn: 完全不解析地址,以数字形式显示。
示例:tcpdump -nn
-X: 以十六进制和ASCII码显示数据包内容。
示例:tcpdump -X
-q: 不显示抓包统计信息,仅显示匹配的数据包。
示例:tcpdump -q
-A: 以ASCII码显示数据包内容。
示例:tcpdump -A
-c <count>: 指定抓取的数据包数量。
示例:tcpdump -c 100
-s <snaplen>: 指定抓取的数据包最大长度(以字节为单位)。
示例:tcpdump -s 1500
-w <file>: 将抓包结果保存到指定文件中。
示例:tcpdump -w output.pcap
-r <file>: 从指定文件中读取数据包进行分析。
示例:tcpdump -r input.pcap
-D: 列出系统上所有可用的网络接口。
示例:tcpdump -D
-f <filter>: 使用指定的过滤器规则来抓取数据包。
示例:tcpdump -i eth0 -f "port 80"
-tttt: 显示完整的时间戳。
示例:tcpdump -tttt
-v: 显示更详细的信息,包括协议解析信息。
示例:tcpdump -v
三、常用语句
-
抓取特定主机的数据包:
tcpdump host 192.168.1.1
这个命令会抓取所有与主机
192.168.1.1
通信的数据包。 -
抓取特定端口的数据包:
tcpdump port 80
这个命令会抓取所有目标或源端口为
80
的数据包。 -
抓取特定协议的数据包:
tcpdump icmp
这个命令会抓取所有 ICMP 协议的数据包。
-
抓取特定网络接口上的数据包:
tcpdump -i eth0
这个命令会抓取网络接口
eth0
上的所有数据包。 -
组合过滤条件:
tcpdump host 192.168.1.1 and port 80
这个命令会抓取主机
192.168.1.1
与端口80
之间的数据包。 -
使用逻辑运算符:
tcpdump host 192.168.1.1 or host 192.168.1.2
这个命令会抓取主机
192.168.1.1
或192.168.1.2
通信的所有数据包。 -
使用子网掩码过滤:
tcpdump net 192.168.1.0/24
这个命令会抓取目标或源 IP 地址在
192.168.1.0
到192.168.1.255
范围内的所有数据包。 -
抓取非特定主机的数据包:
tcpdump not host 192.168.1.1
192.168.1.255
范围内的所有数据包。
-
抓取非特定主机的数据包:
tcpdump not host 192.168.1.1
这个命令会抓取除了主机
192.168.1.1
之外的所有数据包。