![捕获 HTTP GET 请求](https://linux22.com/image/551774/%E6%8D%95%E8%8E%B7%20HTTP%20GET%20%E8%AF%B7%E6%B1%82.png)
在里面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