tcpdump 是 Linux 下强大的网络数据包捕获工具,可以用来监视和分析网络流量。以下是 tcpdump 的使用方法,包括其基本语法、常用选项和一些高级用法。

1. 基本语法

  • 选项:用于配置抓包行为,如抓取的包数、输出格式等。
  • 表达式:用于指定抓包过滤条件,比如只抓取特定的协议或端口号的数据包。

2. 基本用法示例

2.1 抓取所有数据包

不加任何参数的情况下,tcpdump 将在默认的网络接口上抓取所有数据包。

2.2 指定网络接口

使用 -i 选项指定接口(如 eth0、wlan0 等),让 tcpdump 只在该接口上抓取数据包。

2.3 限制抓包数量

使用 -c 选项可以设置抓包数量,例如这里只抓取 10 个数据包。

2.4 保存抓包结果到文件

使用 -w 将结果保存为 .pcap 文件,稍后可以用 tcpdump 或 Wireshark 等工具分析。

2.5 从文件读取数据包

使用 -r 从 output.pcap 文件中读取并分析抓包数据。

3. 常用过滤表达式

3.1 根据主机过滤

指定单一 IP 地址

抓取与指定 IP 地址有关的所有数据包。

源 IP 地址

仅抓取来自指定 IP 的数据包。

目标 IP 地址

  • 仅抓取发往指定 IP 的数据包。

3.2 根据端口过滤

指定端口

抓取所有经过端口 80(HTTP)的数据包。

源端口

抓取源端口为 22(SSH)的数据包。

目标端口

  • 抓取目标端口为 443(HTTPS)的数据包。

3.3 根据协议过滤

TCP 协议

UDP 协议

仅抓取 UDP 协议的数据包。

ICMP 协议

  • 仅抓取 ICMP 协议的数据包,如 ping 请求。

3.4 组合过滤条件

使用逻辑操作符 and、or 和 not 来组合条件。

抓取与 IP 地址 192.168.1.1 通信的,且端口为 80 的 TCP 数据包。

4. 详细输出模式

-vv 选项用于详细显示数据包内容,特别是当数据包中包含很多信息时,通过加 -v(详细)或 -vv(更详细)来增加输出的信息量。

5. 查看数据包的内容

5.1 打印数据包的原始内容

-X 选项可以打印数据包的十六进制和 ASCII 内容,便于深入分析。

5.2 打印数据包的十六进制内容

-XX 会更详细地打印数据包的内容,包括以太网头部的内容,适合需要查看帧的情况下使用。

6. 实战示例

6.1 抓取 HTTP 请求的报文内容

  • -A:以 ASCII 格式显示数据包内容。
  • -s 0:设置抓包大小为无限制,确保捕获整个数据包内容。
  • ‘tcp port 80’:抓取经过 TCP 80 端口的数据包(即 HTTP 流量)。

6.2 抓取 DNS 请求的报文

  • -n:避免将 IP 地址解析成域名,从而加快抓包速度。
  • port 53:抓取与 DNS 服务(端口 53)相关的数据包。

6.3 抓取特定 IP 地址并保存为文件

该命令会抓取与 IP 地址 192.168.1.1 有关的数据包,并将其保存到 capture.pcap 文件中。

7. 高级用法

7.1 按时间戳过滤数据包

此命令会抓取所有 TCP SYN 数据包,适合过滤 TCP 三次握手中的第一个数据包,用于检测新的连接。

7.2 抓取指定数据包长度的数据

抓取数据长度超过 1024 字节的数据包,可以用来分析大流量数据包。

8. 注意事项

  1. 权限:由于 tcpdump 需要直接访问网络接口,通常需要使用 sudo 或 root 权限运行。
  2. 流量较大的网络:在流量较大的网络中使用 tcpdump 时,应合理设置过滤条件,否则可能会产生大量输出。
  3. 隐私与安全:抓包可能会暴露敏感信息,因此需谨慎使用,并确保在合法的场景中使用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注