【问题标题】:ngrep - inverted port resultsngrep - 反转端口结果
【发布时间】:2015-04-27 21:18:39
【问题描述】:

我很好奇 ngrep 是否可以基于端口进行反向匹配?我已经尝试了一些类似的东西:

ngrep -d any -v port 22
interface: any
filter: ( port 22 ) and (ip or ip6)

虽然它说过滤器是针对“端口 22”的,但它并没有选择任何端口。用谷歌搜索了几天,并没有找到解决方案。任何熟悉 ngrep 的人都可以告诉我这是否可行吗?

【问题讨论】:

  • “它说过滤器用于'端口 21'”是什么意思?您编写的过滤器表达式是“端口 22”,它应该匹配端口 22 的数据包,而不是端口 21
  • 你所说的“反向匹配”是什么意思?你的意思是你想要所有的数据包other而不是去特定端口的数据包?
  • @GuyHarris 我做了更新,应该说端口 22(不是 21)。没错,我正在寻找除去往特定端口的数据包之外的所有数据包。原因是,我不想看到我的 SSH 流量。

标签: tcpdump ngrep


【解决方案1】:

哇。 ngrep 的命令行语法真的一个油腻的hack。

ngrep 手册页说:

ngrep {various flags} <match expression> <bpf filter>

没有说明 ngrep 如何设法分辨“匹配表达式”的部分和“bpf 过滤器”的部分。

它确定的方式是:

  • 将标志参数后的第一个 shell 标记(如果存在)作为“匹配表达式”,如果后面有任何标记,则将它们全部粘合在一起,并在它们之间使用空格,并使其成为“bpf 过滤器”;
  • 如果找到“bpf 过滤器”,尝试编译它并:
  • 如果成功,则使用它找到的内容作为“匹配表达式”和“bpf 过滤器”;
  • 如果失败,假设没有“匹配表达式”,取所有标记参数后的标记,粘合它们 一起构成“bpf 过滤器”。

这意味着如果你使用ngrep port 22,它首先会尝试使用“port”作为“匹配表达式”并使用“22”作为“bpf 过滤器”,但由于“22”不是有效的 BPF 而失败过滤器,然后假设 没有“匹配表达式”并且“端口 22”是“bpf 过滤器”,它有效。

但是,如果您使用ngrep not port 22,它首先会尝试使用“not”作为“匹配表达式”并使用“端口 22”作为“bpf 过滤器”,这成功,所以你最终以“not”作为它尝试 grepping 的过滤器,并将“port 22”作为它交给 libpcap 的 BPF 过滤器。

遗憾的是,ngrep 没有办法说“没有匹配表达式,只有一个 BPF 过滤器”,所以你必须做一些事情,比如 ngrep "" not port 22,有一个空的匹配表达式它将“not port 22”识别为 BPF 过滤器。

所以,如果您想查看所有流量除了到端口 22 的流量,请尝试

ngrep -d any "" not port 22

-v 影响匹配表达式,NOT BPF 过滤器;这意味着您在问题中给出的命令将匹配 only 进出端口 22 的数据包,not 数据包 not 进出端口 22。由于您希望空匹配表达式匹配 所有 个数据包,而不是 no 个数据包,因此您将忽略 -v 标志。

【讨论】:

  • 当我尝试使用“-v not port 22”时,它会显示端口 22 的流量,我假设这是因为我们正在反转 not 语句。但是,当我尝试使用“-v not port 21”时,我看不到任何流量,包括端口 22。 interface: any filter: (port 21) and (ip or ip6) don't match: not
  • 另一个例子,我将使用 '-d any -v port 22' 并得到结果: "filter: ( port 22 ) and (ip or ip6) ######... ######”,但是当我使用端口 21 时,我得到“过滤器:(端口 21)和(ip 或 ip6)^Cexit 0 received, 0 dropped”
  • 好的,ngrep 的命令行语法被设计破坏了,所以我已经更新了答案,以表明你在这里真正需要什么。
  • 哇,我很惊讶它的工作原理,并且惊讶于语法被破坏了。我非常感谢您的回复(和耐心)!
  • 很抱歉在我的原始答案中假设 ngrep 是理智的。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多