DHCP 帧的正确 tshark 捕获过滤器选项是什么?

what is the correct tshark capture filter option for the DHCP frame?

我正在尝试使用 mac 书中的以下命令捕获 DHCP 帧以供分析。

sudo tshark -i en0 -f "port 67 or port 68" -a duration:300 -w /tmp/dump.pcap

我使用以下命令获取数据包中所有协议的所有字段,但它没有打印任何值。 DHCP 帧的捕获过滤器选项是否正确?感谢任何帮助?

sudo tshark -T text -r /tmp/dump.pcap -V

回答

是的,你的命令没问题。可能没有 DHCP 数据包到达,因此没有被捕获。尝试通过同一设备的第二个终端 window 中的命令强制 DHCP activity:

sudo dhclient -r
sudo dhclient

警告:如果您是远程连接,请不要应用这些命令。第一个命令释放 IP 地址,您的连接将被中断,无法发出第二个命令并远程取回地址。

关于数据捕获的一些细节

thsark 过滤器的语法与 Wireshark 相同。 存在 2(或 3)种过滤器类型:

  • 捕获过滤器,-f tshark 选项:它选择将捕获哪些数据包,哪些不捕获。这很有用,例如以获得更小的捕获文件大小。
  • 显示过滤器,-Y tshark 选项:它选择从所有捕获的数据包中显示哪些数据包。

您可以将这两种类型结合起来。

示例:

tshark -i eth0 -n -Y "ip.addr==8.8.8.8"
tshark -i eth0 -n -Y "ip.addr==8.8.8.8" -f "udp port 53"
tshark -i eth0 -n -Y "ip.addr==8.8.8.8 and udp.port==53"
  • 所有数据包都被抓取,但只显示8.8.8.8 IP地址的数据包。
  • 只抓取DNS包,只显示抓取到的8.8.8.8 IP地址包
  • 所有数据包都被捕获,但只显示具有UDP端口53(即DNS)的8.8.8.8 IP地址数据包。比较上面一行中显示和捕获过滤器之间端口过滤的不同语法。

也可以应用所有其他选项,例如 -a、-b、-w、-s。

tcpdump 应用程序也很有用。它在大多数 Linux 系统中可用,甚至非常小或特殊。它没有显示过滤器选项。只能应用捕获过滤器。缺少其他选项:-a、-b ...

sudo tcpdump -i eth0 -w /tmp/dhcp.pcap "udp port 67 or udp port 68"