捕获HTTP GET请求

在Wireshark wiki中是一个过滤HTTP GET请求的例子:

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

有了这个filter:

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

不幸的是,这是行不通的。 如何正确的HTTP GET请求filter?

它确实有效,确保你用双引号包围你的filter,所以shell不会尝试和parsingfilter参数。

例如我的一个google.comcurl:

 $ 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确实允许你应用读取filter的概念。 现在,如果你有大量的数据(过滤发生在捕获后),这些可能不会有用,但它们当然更直观,更可读。

 $ 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