今天,我们学习的是一款名为tcpdump的抓包软件

  tcpdump 是 Linux/Unix 系统中最强大、最常用的命令行网络数据包分析工具。它允许用户拦截和显示网络接口上传输的 TCP/IP 数据包,是网络管理员和安全专家进行故障排查、网络分析和安全审计的必备工具。

核心功能

  • 抓包:实时捕获经过指定网络接口的数据包。
  • 过滤:支持强大的过滤表达式(BPF 语法),可以只抓取特定 IP、端口、协议或标志位的数据包。
  • 分析:以人类可读的格式显示数据包的详细信息(如源/目的 IP、端口、协议类型、载荷内容等)。
  • 保存:可以将捕获的数据包保存到文件(通常是 .pcap 格式),以便稍后使用 Wireshark 等图形化工具进行深度分析。

这里介绍几个比较常用的几个过滤语法:

基于ip/域名:

1.tcpdump host+ip/域名(指定某个主机,既只看这个主机的信息)

2.tcpdump src host+ip/域名(只看发送端为指定的ip/域名的信息)

3.tcpdump dst host+ip/域名(只看接收端为指定的ip/域名的信息)

基于端口:

4.tcpdump port+端口号(指定单个端口)

5.tcpdump portrange+端口范围(端口范围)

基于协议:

tcpdump tcp

tcpdump udp

tcpdump icmp # Ping 命令使用的协议

tcpdump arp # 地址解析协议

tcpdump dns # 域名解析 (等价于 port 53)

当然除了这些还可以通过添加参数来进一步进行快捷过滤,例如:

# 推荐始终加上 -nn,让输出更清晰、速度更快 sudo tcpdump -nn port 80

这是最重要的参数组合。默认情况下,tcpdump 会尝试把 IP 解析成域名(如 www.google.com),把端口解析成服务名(如 http)。这不仅慢,还会产生额外的 DNS 流量干扰分析。

# 抓取 HTTP 流量并直接 readable 的文本 sudo tcpdump -nn -A port 80

如果你只想看 HTTP 请求、HTML 代码或报错信息,不想看一堆十六进制乱码,用 -A。它会以 ASCII 码打印数据包内容。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐