Wireshark过滤器语法

时间:2012-04-23 21:57:56

标签: windows networking wireshark

我正在尝试为基于Wireshark的命令行编写TShark过滤器。 我想将这些选项添加到命令中:

-i 2 (interface with index n°2)
-a duration:60 (the "scan" should last 60 seconds)
-v (print the result and exit)
-x (print an ASCII dump in the file)

和仅捕获具有这些特性的数据包的过滤器:

"ip" (only IP packets)
"ip.src == 192.168.0.1" (source IP adress should be 192.168.0.1)
"ip.dst == 111.222.111.222" (destination IP adress should be 111.222.111.222)
"port == 80 or port == 443" (port should be http or https)
"http.request.method == 'GET'" (it should be a GET request)

然后我想将结果保存在文件“test.txt”中。 所以最后的命令应该是:

tshark -i 2 -a duration:60 -vx -f "ip" && "ip.src == 192.168.0.1" && "ip.dst == 111.222.111.222" && "port == 80 or port == 443" && "http.request.method == 'GET'" > test.txt

但我不断收到来自Windows的错误消息,指出'"ip.src == 192.168.0.1"不是公认的内部或外部命令。我试着用空格,没有空格等等,但是无法想办法让这个工作。

问题可能来自我“链接”条件的方式。

  • 还想询问是否存在某种“停止执行”命令,该命令会停止当前捕获但仍将结果保存在.txt文件中。

3 个答案:

答案 0 :(得分:1)

  

和仅捕获具有这些特殊性的数据包的过滤器

...

  

“http.request.method =='GET'”(应该是GET请求)

最后一部分 EXTREMELY 很难与捕获过滤器一起使用。如果可以避免这种情况,使用捕获过滤器 rest 相对容易:

"ip src 192.168.0.1 && ip dst 111.222.111.222 && (tcp port 80 or tcp port == 443)"

并且您可能能够将整个* shark过滤器用作读取过滤器:

-r "ip && ip.src == 192.168.0.1 && ip.dst == 111.222.111.222 && (tcp.port == 80 or tcp.port == 443) && http.request.method == 'GET'"

(请注意它是tcp.port,而不仅仅是port)。

但是,请注意,对于HTTP-over-SSL / TLS,如果请求已加密,您必须安排解密这些请求才能使http.request.method == 'GET'生效。< / p>

(“or”子句的括号可能没有必要,但我更喜欢它们只是使表达式的含义更加明显。)

答案 1 :(得分:0)

tshark -f选项需要capture filters,而不是wireshark显示过滤器。这与libpcap语法相同。

答案 2 :(得分:0)

您必须删除过滤器部件之间的"个字符。尝试:

"ip && ip.src == 192.168.0.1 && ip.dst == 111.222.111.222 &&
 port == 80 or port == 443 && http.request.method == 'GET'"