tcpdump 是一款强大的网络抓包工具,它可以对网络流量进行捕获和分析。下面是 tcpdump 常用的一些参数及其使用方法。
-i
参数
-i
参数用于指定要捕获的网络接口。例如,-i eth0
表示捕获 eth0 接口的网络流量。如果不指定该参数,则 tcpdump 将默认使用第一个接口。
# 捕获 eth0 接口的网络流量
tcpdump -i eth0# 捕获 ens33 接口的网络流量,只显示 TCP 协议
tcpdump -i ens33 tcp
-n
参数
-n
参数用于禁用 DNS 解析,将 IP 地址显示为点分十进制的形式。这样可以避免 DNS 查询带来的延迟和资源浪费。
# 禁用 DNS 解析,将 IP 地址显示为点分十进制的形式
tcpdump -i eth0 -n
-c
参数
-c
参数用于指定捕获的数据包数量。例如,-c 10
表示只捕获 10 个数据包。
# 捕获 10 个数据包
tcpdump -i eth0 -c 10
-w
参数
-w
参数用于将捕获到的数据包保存到文件中,以便后续分析和处理。例如,-w packets.pcap
表示将数据包保存到名为 packets.pcap 的文件中。
# 将数据包保存到名为 packets.pcap 的文件中
tcpdump -i eth0 -w packets.pcap# 只捕获 HTTP 流量,并将数据包保存到名为 http.pcap 的文件中
tcpdump tcp port 80 -w http.pcap
-s
参数
-s
参数用于指定要捕获的数据包的最大长度。如果超过该长度,则只会显示部分数据包的内容。
# 捕获的数据包最大长度为 100 个字节
tcpdump -i eth0 -s 100
-A
参数
-A
参数用于以 ASCII 编码方式显示数据包的内容。这对于查看 HTTP、SMTP 等协议的数据包非常有用。
# 以 ASCII 编码方式显示数据包的内容
tcpdump -i eth0 -A
-X
参数
-X
参数用于以十六进制和 ASCII 编码混合的形式显示数据包的内容。这对于查看二进制数据和加密数据非常有用。
# 以十六进制和 ASCII 编码混合的形式显示数据包的内容
tcpdump -i eth0 -X
-v
参数
-v
参数用于显示一些详细的信息,例如 IP 头部、TCP 头部、UDP 头部等。如果需要更详细的信息,可以使用 -vv
或 -vvv
参数。
# 显示 TCP 头部信息
tcpdump -i eth0 -v tcp
expression
参数
expression
参数用于指定要捕获的数据包的过滤条件。例如,tcp
表示只捕获 TCP 协议的数据包,host 192.168.1.100
表示只捕获目标地址为 192.168.1.100 的数据包。
# 只捕获目标地址为 192.168.1.100 的数据包
tcpdump -i eth0 host 192.168.1.100# 捕获目标地址为 192.168.1.100 并且源端口为 80 的数据包
tcpdump -i eth0 host 192.168.1.100 and src port 80
以上是 tcpdump 常用的一些参数及其使用方法,还有很多其他的参数和用法可以参考 tcpdump 的手册。
[root@localhost root]# tcpdump -i enp4s0 tcp port 22 -n -c 10 -s 100 -X -vvv
tcpdump: listening on enp4s0, link-type EN10MB (Ethernet), capture size 100 bytes
06:21:23.327211 IP (tos 0x10, ttl 64, id 24718, offset 0, flags [DF], proto TCP (6), length 164)192.168.2.140.ssh > 192.168.7.97.49723: Flags [P.], seq 3070135337:3070135461, ack 3785805369, win 261, length 1240x0000: 4510 00a4 608e 4000 4006 4e78 c0a8 028c E...`.@.@.Nx....0x0010: c0a8 0761 0016 c23b b6fe 8c29 e1a6 ce39 ...a...;...)...90x0020: 5018 0105 8bd4 0000 a8a3 609b 5d65 ff5a P.........`.]e.Z0x0030: 2e66 8817 17a5 346a 1768 e958 3006 ee9f .f....4j.h.X0...0x0040: a58f 841d e311 b866 bcad d933 0b13 a6dd .......f...3....0x0050: a51b 0b20 699c ....i.
06:21:23.327461 IP (tos 0x10, ttl 64, id 24719, offset 0, flags [DF], proto TCP (6), length 364)192.168.2.140.ssh > 192.168.7.97.49723: Flags [P.], seq 124:448, ack 1, win 261, length 3240x0000: 4510 016c 608f 4000 4006 4daf c0a8 028c E..l`.@.@.M.....0x0010: c0a8 0761 0016 c23b b6fe 8ca5 e1a6 ce39 ...a...;.......90x0020: 5018 0105 8c9c 0000 5fec 5d11 7368 c69e P......._.].sh..0x0030: 7934 a494 0b30 cb44 465e feae 8361 a3d6 y4...0.DF^...a..0x0040: b573 e41d 70c9 0268 44d1 aa09 329e 27a8 .s..p..hD...2.'.0x0050: 1806 c57e 2ce1 ...~,.
06:21:23.327608 IP (tos 0x10, ttl 64, id 24720, offset 0, flags [DF], proto TCP (6), length 792)192.168.2.140.ssh > 192.168.7.97.49723: Flags [P.], seq 448:1200, ack 1, win 261, length 7520x0000: 4510 0318 6090 4000 4006 4c02 c0a8 028c E...`.@.@.L.....0x0010: c0a8 0761 0016 c23b b6fe 8de9 e1a6 ce39 ...a...;.......90x0020: 5018 0105 8e48 0000 59e8 9bdf cbb8 8a46 P....H..Y......F0x0030: a78e aa6a e37c f78b fa76 48fd 7b4a 0e56 ...j.|...vH.{J.V0x0040: b104 9925 0087 cf4d 02c5 0aff c043 28a7 ...%...M.....C(.0x0050: d0d8 de60 67dc
例如:
tcpdump -i enp1s0f0 -nnSxx h 192.168.1.1 and 'len == 114'
这个命令的含义是:
在接口 enp1s0f0
上抓包,只显示目标地址为 192.168.1.1,且数据包长度为 114 字节的数据包,并以十六进制和 ASCII 编码混合的形式显示数据包的内容。
-nn
参数表示禁止进行 DNS 解析和端口转换,
-S
参数表示以序列号排序,
-xx
参数表示以十六进制和 ASCII 编码混合的形式显示数据包的内容。