ngrep - 反向端口结果
ngrep - inverted port results
我很好奇 ngrep 是否可以根据端口进行反向匹配?我尝试了以下方法:
ngrep -d any -v port 22
interface: any
filter: ( port 22 ) and (ip or ip6)
虽然它说过滤器适用于 'port 22',但它不会选择任何端口。尝试谷歌搜索了几天,但没有找到解决方案。任何熟悉 ngrep 的人都可以告诉我这是否可行吗?
哇。 ngrep 的命令行语法确实是一个油腻的技巧。
ngrep 手册页说:
ngrep {various flags} <match expression> <bpf filter>
没有说明 ngrep 如何设法分辨 "match expression" 的一部分和 "bpf filter" 的一部分。
它确定的方式是:
- 将标志参数之后的第一个 shell 标记作为 "match expression" ,如果它后面有任何标记,则将它们全部粘合在一起,并在它们之间留出空格"bpf filter";
- 如果找到 "bpf filter",尝试编译它并:
- 如果成功,使用它找到的 "match expression" 和 "bpf filter";
- 如果失败,假设是没有"match expression",取全部 标志参数后的记号,将 它们 粘合在一起,形成 "bpf filter".
这意味着如果您执行 ngrep port 22
,它首先会尝试使用 "port" 作为 "match expression" 并使用“22”作为 "bpf filter",但会失败,因为“ 22" 不是有效的 BPF 过滤器,然后假设 不是 一个 "match expression" 并且 "port 22" 是 "bpf filter",这有效。
但是,如果您这样做 ngrep not port 22
,它首先会尝试使用 "not" 作为 "match expression" 并使用 "port 22" 作为 "bpf filter",成功,所以你最终得到 "not" 作为它尝试 grepping 的过滤器和 "port 22" 作为它交给 libpcap 的 BPF 过滤器。
可悲的是,ngrep 没有办法 说 "there's no match expression, there's just a BPF filter",所以你必须做一些事情,比如 ngrep "" not port 22
,用一个空的匹配表达式来得到它识别 "not port 22" 作为 BPF 过滤器。
因此,如果您想查看所有流量 除了 到端口 22 的流量,请尝试
ngrep -d any "" not port 22
-v
影响匹配表达式,NOT BPF 过滤器;这意味着您在问题中给出的命令将匹配 only 进出端口 22 的数据包,not 数据包 not 到或来自端口 22。由于您希望空匹配表达式匹配 all 数据包,而不是 no 数据包,您将保留-v
标记出来。
我很好奇 ngrep 是否可以根据端口进行反向匹配?我尝试了以下方法:
ngrep -d any -v port 22
interface: any
filter: ( port 22 ) and (ip or ip6)
虽然它说过滤器适用于 'port 22',但它不会选择任何端口。尝试谷歌搜索了几天,但没有找到解决方案。任何熟悉 ngrep 的人都可以告诉我这是否可行吗?
哇。 ngrep 的命令行语法确实是一个油腻的技巧。
ngrep 手册页说:
ngrep {various flags} <match expression> <bpf filter>
没有说明 ngrep 如何设法分辨 "match expression" 的一部分和 "bpf filter" 的一部分。
它确定的方式是:
- 将标志参数之后的第一个 shell 标记作为 "match expression" ,如果它后面有任何标记,则将它们全部粘合在一起,并在它们之间留出空格"bpf filter";
- 如果找到 "bpf filter",尝试编译它并:
- 如果成功,使用它找到的 "match expression" 和 "bpf filter";
- 如果失败,假设是没有"match expression",取全部 标志参数后的记号,将 它们 粘合在一起,形成 "bpf filter".
这意味着如果您执行 ngrep port 22
,它首先会尝试使用 "port" 作为 "match expression" 并使用“22”作为 "bpf filter",但会失败,因为“ 22" 不是有效的 BPF 过滤器,然后假设 不是 一个 "match expression" 并且 "port 22" 是 "bpf filter",这有效。
但是,如果您这样做 ngrep not port 22
,它首先会尝试使用 "not" 作为 "match expression" 并使用 "port 22" 作为 "bpf filter",成功,所以你最终得到 "not" 作为它尝试 grepping 的过滤器和 "port 22" 作为它交给 libpcap 的 BPF 过滤器。
可悲的是,ngrep 没有办法 说 "there's no match expression, there's just a BPF filter",所以你必须做一些事情,比如 ngrep "" not port 22
,用一个空的匹配表达式来得到它识别 "not port 22" 作为 BPF 过滤器。
因此,如果您想查看所有流量 除了 到端口 22 的流量,请尝试
ngrep -d any "" not port 22
-v
影响匹配表达式,NOT BPF 过滤器;这意味着您在问题中给出的命令将匹配 only 进出端口 22 的数据包,not 数据包 not 到或来自端口 22。由于您希望空匹配表达式匹配 all 数据包,而不是 no 数据包,您将保留-v
标记出来。