2

我正在尝试为基于命令行的 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 文件中。
4

3 回答 3

1

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

...

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

最后一部分很难用捕获过滤器完成。如果你能避免这种情况,剩下的就用一个捕获过滤器相对容易地完成:

"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'才能正常工作。

(“或”子句周围的括号可能不是必需的,但我更喜欢它们,只是为了使表达式的含义更明显。)

于 2013-08-06T18:24:08.567 回答
0

tshark-f选项采用捕获过滤器,而不是wireshark 显示过滤器。这与libpcap语法相同。

于 2012-04-24T12:22:19.377 回答
0

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

"ip && ip.src == 192.168.0.1 && ip.dst == 111.222.111.222 &&
 port == 80 or port == 443 && http.request.method == 'GET'"
于 2013-08-06T13:20:37.720 回答