【发布时间】:2020-12-02 22:17:41
【问题描述】:
我正在使用 mac 并在加载网站时尝试捕获数据包实时数据包。我通过 Wifi 连接并且能够在不使用这些过滤器的情况下捕获数据包。
但是,当我输入“tcp port http”时,我空手而归。
有解决这个问题的建议吗?
【问题讨论】:
我正在使用 mac 并在加载网站时尝试捕获数据包实时数据包。我通过 Wifi 连接并且能够在不使用这些过滤器的情况下捕获数据包。
但是,当我输入“tcp port http”时,我空手而归。
有解决这个问题的建议吗?
【问题讨论】:
当您在捕获过滤器表达式中使用端口名称时,libpcap(Wireshark 使用的数据包捕获库)需要将名称转换为可用于匹配捕获数据包字节的数字。它通过looking up the port name in /etc/services 这样做。 (具体来说,它调用getaddrinfo,它通常在macOS和Linux上查找/etc/services中的端口,在Windows上查找C:\system32\drivers\etc\services。)如果我在这里在我的系统上打开/etc/services,“http”对应于端口80 .
但是,现代网络实际上不再使用端口 80。如今,大多数网络流量都使用 HTTPS 和IANA-assigned port for HTTPS is 443 加密。
使用“tcp 端口 443”或“tcp 端口 443 或 tcp 端口 80”来确保捕获 HTTP 和 HTTPS 可能会更好。
【讨论】:
tcpdump 转储已编译的数据包匹配来验证过滤器正在使用哪个端口,例如 "tcp port http"使用-d 选项的代码。您应该看到tcpdump -d "tcp port 80" 和tcpdump -d "tcp port http" 产生相同的输出。最后,Gerald 的捕获过滤器的更短形式是 "tcp port 80 or 443",因为 tcpdump.org/manpages/pcap-filter.7.html 允许这样做,其中指出,“如果给出的标识符没有关键字,则假定最近的关键字。”我>。不过,无论哪种方式都会生成相同的 BPF 代码。
据我所知,过滤器必须是tcp.port == 80。
但是如果你的 Wireshark 没有捕获任何东西(没有过滤器),你可以检查你的安装和wiki。
【讨论】: