捕获 HTTP GET 请求

捕获 HTTP GET 请求

在里面Wireshark 维基以下是过滤请求的示例HTTP GET

捕获 HTTP GET 请求。这将查找紧跟在 TCP 报头后面的字节“G”、“E”、“T”和“ ”(十六进制值 47、45、54 和 20)。“tcp[12:1] & 0xf0) >> 2”可计算出 TCP 报头长度。来自 Jefferson Ogata 通过 tcpdump-workers 邮件列表。

使用此过滤器:

port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420

不幸的是,这不起作用。HTTP GET请求的正确过滤器是什么?

答案1

它确实有效,请确保用双引号括住你的过滤器,这样 shell 就不会尝试解析过滤器参数。

例如,对我而言,google.com 的 curl 是:

$ sudo tshark -i eth0 "port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420"
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
  0.000000   10.53.0.66 -> 209.85.143.104 HTTP GET / HTTP/1.1 

但这是一种相当复杂的方法。tshark 确实允许您应用读取过滤器的概念。如果您有大量数据(捕获后进行过滤),这些可能不那么有用,但它们肯定更直观和可读。

$ sudo tshark -i eth0 -R 'http.request.method == "GET"' "port 80"
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
  5.641015   10.53.0.66 -> 209.85.143.104 HTTP GET / HTTP/1.1 

相关内容