使用 tcpdump 检测 HTTP 会话

使用 tcpdump 检测 HTTP 会话

我有一个跟踪文件,我想找到跟踪中成功访问的所有通过 HTTP 联系的 Web 服务器。

我在用着:

tcpdump -r file.trace - tcp  port 80

也许我必须搜索向我发送响应数据包的服务器 IP 列表(我的意思是那些与我创建 HTTP 会话的服务器)。仅服务器,而不是其他 TCP 连接。我的意思是,我需要响应 HTTP 请求并发送 HTTP 响应的服务器 IP。

我怎能这样做?

答案1

tcpdump -r file.trace - tcp dst port 80

,正如您所发现的,不是一个有效的 tcpdump 命令。如果您删除多余的-,那么您会得到

tcpdump -r file.trace tcp dst port 80

这是一个有效的 tcpdump 命令,它将仅显示流量TCP 端口 80。它不会显示流量TCP 端口 80,例如,如果file.trace有往返于端口 80 的 HTTP 流量,它将显示 HTTP 请求流量,但不是HTTP 响应流量。

如果你想查看从端口 80,使用

tcpdump -r file.trace tcp port 80

但是,如果有除 HTTP 流量之外的 TCP 流量往返于端口 80,则也会显示该流量。

此外,HTTP 流量不是不会显示往返于端口 80 的流量,例如 HTTP-over-SSL/TLS(“https”)流量,或到端口 8080 等端口的流量。例如,要查看往返于端口 80(用于 HTTP)和端口 443(用于 HTTPS)的流量,请执行以下操作

tcpdump -r file.trace tcp port 80 or 443

那么什么是“不起作用”?

例如,它没有显示 HTTPS 流量吗?如果是,则需要添加端口 443。

它没有显示到其他端口的流量吗?如果是这样,您还需要添加这些端口。Tcpdump 无法识别 HTTP 流量(Wireshark 只能通过端口号识别它)。

它是否只显示请求,而不显示响应?如果您想查看响应,请使用tcp port而不是tcp dst port。如果您仅有的想要查看请求,请使用tcp dst port

相关内容