📜  Ngrep – Linux 网络数据包分析器

📅  最后修改于: 2022-05-13 01:57:27.420000             🧑  作者: Mango

Ngrep – Linux 网络数据包分析器

ngrep一个类似于grep 命令的网络包分析器,但ngrep grep 是网络层的包。这个工具 grep 将要进入网络接口的流量。ngrep 允许我们指定一个扩展的正则或十六进制表达式来匹配数据包的数据负载。ngrep 可以在 IPv4/6、TCP、UDP、ICMPv4/6 等协议上工作, IGMP 以及许多接口上的 Raw。

安装

现在让我们看看如何在 Linux 上安装 ngrep。 ngrep 在大多数 Linux 包管理器中可用。我们将使用这些包管理器来安装 ngrep。根据您的操作系统使用以下命令之一:

对于 Debian/Ubuntu/Kali Linux:

sudo apt-get install ngrep

对于 Arch Linux:

sudo pacman -S ngrep

对于 Fedora:



dnf install ngrep

用法

成功安装ngrep后,现在让我们看看如何使用ngrep。要监控在默认网络接口上运行的所有流量,只需使用 ngrep 命令

sudo ngrep 

停止使用 ngrep ctrl+C键。

基于协议过滤数据包

要仅显示有关数据包头和数据包有效负载的信息并避免无用信息,请在 ngrep 命令中使用 -q 选项。我们将在下一个命令中使用此选项。让我们看看如何使用 ngrep 过滤特定协议的包。让我们举一个例子,在这个例子中,我们将捕获所有 ICMP 包。要使用 ICMP 协议,我们将向另一台主机发送 ping,然后使用 ngrep 捕获所有 ICMP 数据包。

sudo ngrep -q '.' 'icmp'

基于主机过滤数据包

我们也可以根据主机对数据包进行过滤,比如我们抓一下主机google.com的数据包:

sudo ngrep -q '.' 'host google.com'



过滤通过浏览器接收的数据包

要捕获通过 Web 浏览器上网时接收到的所有数据包,我们可以使用以下命令:

sudo ngrep -q '^GET .* HTTP/1.1

过滤通过端口的数据包

要监控通过源主机或目标端口的流量,请使用 port 选项并使用 ngrep 命令提及端口号:

sudo ngrep port 443

过滤包含“错误”一词的数据包

要在任何基于网络的 Syslog 流量中搜索“error”一词的出现,请使用以下命令:

sudo ngrep -d any 'error' port 514

使用文件/etc/services/ 中的端口名称而不是端口

ngrep 工具还可以将存储在 /etc/services 中的服务端口名称转换为端口号,这意味着无需在 ngrep 命令中提及端口号,我们可以在 /etc/services 文件中提及端口名称。

sudo ngrep -d any 'error' port syslog

在端口号 80 上过滤数据包

要捕获在端口号 80 上运行的所有流量,我们可以使用以下命令:

sudo ngrep port 80

以易于阅读的格式获取数据包数据

在前面的输出中,我们可以看到标题没有格式化,这使得阅读标题变得困难。要以格式良好的方式获取标题,请使用以下命令:

sudo ngrep -W byline port 80

获取数据包的时间戳

每次匹配数据包时,将 -t 选项与 ngrep 命令一起使用以获取 YYYY/MM/DD HH:MM:SS.UUUUUU 中的时间戳

sudo ngrep -t -W byline port 80

避免混杂模式

使用 -p 选项避免将接口置于混杂模式

sudo ngrep -p -W byline port 80

当观察原始或未知协议以显示子协议编号和单字符标识符时,请在 ngerp 命令中使用 -N 选项:

sudo ngrep -N -W byline
man ngrep