ngrep :网络嗅探的利器

news2025/3/26 20:05:08

在网络安全、渗透测试和系统调试领域,捕获和分析网络流量是不可或缺的技能。虽然像 tcpdumpWireshark 这样的工具广为人知,但有一个轻量级且功能强大的工具却常常被忽视——ngrep。本文将详细介绍 ngrep 的功能、使用方法及其在实际场景中的应用,同时对比类似工具(如 tcpdumpWiresharkdsniff),帮助读者理解它们的特点和适用场景。


一、什么是 ngrep?

ngrep(Network Grep)是一个基于文本的网络数据包捕获和过滤工具,名字来源于其与 grep 的相似性。它结合了数据包嗅探和正则表达式匹配的能力,允许用户实时捕获网络流量并筛选出符合特定模式的内容。ngrep 由 Jordan Ritter 在 2000 年代初开发,虽然不如 Wireshark 那样广为人知,但在某些场景下却异常高效。

核心特点
  • 轻量级:无需图形界面,适合命令行环境。
  • 正则表达式支持:可以匹配数据包 payload 中的文本内容。
  • 协议支持:支持 TCP、UDP、ICMP 等协议。
  • 实时性:捕获并显示匹配的数据包,适合快速调试。
安装方法

在大多数 Linux 发行版中,可以通过包管理器安装:

sudo apt install ngrep  # Debian/Ubuntu
sudo yum install ngrep  # CentOS/RHEL

或从源代码编译:

git clone https://github.com/jpr5/ngrep.git
cd ngrep
./configure && make && sudo make install

二、ngrep 的基本使用

ngrep 的基本语法如下:

ngrep [选项] '匹配模式' [过滤器]
  • 匹配模式:正则表达式,用于筛选数据包 payload。
  • 过滤器:类似于 tcpdump 的 BPF(Berkeley Packet Filter)语法,用于限定协议、端口或主机。
示例 1:捕获 HTTP 请求

监听接口 eth0 上包含 GET 的 HTTP 流量:

sudo ngrep -d eth0 'GET' port 80

输出:

interface: eth0 (192.168.111.0/255.255.255.0)
filter: ( port 80 ) and ((ip || ip6) || (vlan && (ip || ip6)))
match (JIT): GET
####
T 192.168.111.1:56503 -> 192.168.111.100:80 [AP] #4
  GET / HTTP/1.1..User-Agent: Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.22621.4391..Host: 192.168.111.100..Connect
  ion: Keep-Alive....                                                                                                                          
######
  • T:TCP 数据包。
  • [AP]:标志(ACK 和 PSH)。
  • GET /index.html:匹配的 payload。
示例 2:捕获 ICMP Ping 数据

捕获包含 abcd(Windows Ping 默认 payload)的 ICMP 流量:

sudo ngrep -d any 'abcd' icmp

输出:

interface: any
filter: ( icmp ) and (ip || ip6)
match (JIT): abcd
#
I 192.168.111.1 -> 192.168.111.100 8:0 #1
  ....abcdefghijklmnopqrstuvwabcdefghi                                                                                                         
#
I 192.168.111.100 -> 192.168.111.1 0:0 #2
  ....abcdefghijklmnopqrstuvwabcdefghi                                                                                                         
#
I 192.168.111.1 -> 192.168.111.100 8:0 #3
  ....abcdefghijklmnopqrstuvwabcdefghi                                                                                                         
#
I 192.168.111.100 -> 192.168.111.1 0:0 #4
  ....abcdefghijklmnopqrstuvwabcdefghi 
常用选项
  • -d <接口>:指定监听接口(如 eth0tun0)。
  • -i:忽略大小写。
  • -x:以十六进制和 ASCII 显示 payload。
  • -t:显示时间戳。
  • -q:静默模式,只显示匹配结果。

三、ngrep 的高级应用
1. 嗅探明文凭据

在渗透测试中,ngrep 可以捕获未加密的协议流量(如旧版 SMB 或 FTP):

sudo ngrep -d tun0 'user|pass' port 21

匹配 FTP 的用户名或密码:

T 10.10.10.100:12345 -> 10.10.10.200:21 [AP]
  USER admin
T 10.10.10.100:12345 -> 10.10.10.200:21 [AP]
  PASS secret123
2. 调试网络应用

检查特定 API 请求:

sudo ngrep -d any 'api_key' port 443

捕获 HTTPS 的明文流量(需配合 SSL 解密工具)。

3. 捕获自定义协议

匹配自定义 ICMP payload:

sudo ngrep -d any 'SECRET' icmp

适用于 CTF 或调试场景。


四、类似工具对比

虽然 ngrep 功能强大,但它并非万能。以下是与类似工具的对比:

1. tcpdump
  • 特点
    • 经典的命令行抓包工具,支持 BPF 过滤。
    • 不直接支持正则表达式,但可结合 grep 使用。
  • 优点:轻量,支持所有协议,广泛预装。
  • 缺点:输出复杂,难以直接匹配 payload。
  • 示例
    sudo tcpdump -i eth0 icmp | grep "abcd"
    
  • 与 ngrep 的区别tcpdump 更适合捕获原始数据包,ngrep 更擅长文本过滤。
2. Wireshark
  • 特点
    • 图形化界面,支持深度数据包分析。
    • 可通过显示过滤器(如 http.request)筛选流量。
  • 优点:可视化强,协议解析全面。
  • 缺点:资源占用高,不适合轻量环境。
  • 与 ngrep 的区别Wireshark 适合离线分析,ngrep 更适合实时捕获。
3. dsniff
  • 特点
    • 专注于嗅探明文凭据(如 FTP、SMTP)。
    • 包含多个工具(如 dsniffarpspoof)。
  • 优点:针对性强,适合密码捕获。
  • 缺点:功能单一,维护较少。
  • 示例
    sudo dsniff -i eth0
    
  • 与 ngrep 的区别dsniff 是被动嗅探工具,ngrep 更灵活。
4. tshark
  • 特点
    • Wireshark 的命令行版本,支持复杂过滤。
  • 优点:功能强大,协议支持广。
  • 缺点:语法复杂,学习曲线陡。
  • 示例
    sudo tshark -i eth0 -Y "icmp"
    
  • 与 ngrep 的区别tshark 更全面,ngrep 更简单。

五、ngrep 的优势与局限
优势
  1. 简单高效:结合了抓包和文本匹配,命令简洁。
  2. 实时性:适合快速调试或渗透测试。
  3. 轻量级:在资源受限环境(如 OSCP 的 Kali VM)表现良好。
局限
  1. 协议支持有限:无法解析复杂协议的头部(如 HTTP/2)。
  2. 加密流量:无法直接处理 HTTPS 等加密数据。
  3. 输出格式:不如 Wireshark 直观。

六、实用建议
  1. 学习场景
    • 在 CTF 或 OSCP 中,用 ngrep 捕获明文流量(如 SMB、FTP)。
    • 示例:
      sudo ngrep -d tun0 'samba|user|pass' port 445
      
  2. 与其他工具结合
    • tcpdump 捕获完整流量,再用 ngrep 过滤:
      sudo tcpdump -i eth0 -w dump.pcap
      ngrep -I dump.pcap 'GET'
      
  3. 替代选择
    • 如果需要图形化分析,转用 Wireshark
    • 如果需要批量处理,试试 tshark

七、结语

ngrep 虽然不如 tcpdumpWireshark 出名,但其独特的正则表达式匹配能力和轻量级设计使其在特定场景下(如实时嗅探、渗透测试)极具价值。相比之下,tcpdump 更通用,Wireshark 更强大,dsniff 更专注,而 ngrep 则在简洁性和灵活性间找到了平衡。

对于网络安全爱好者或从业者来说,掌握 ngrep 不仅能提升效率,还能在资源受限的环境中发挥奇效。如果你还未尝试,不妨在下次调试或测试中用它捕获流量,体验它的魅力吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2321225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python面试高频考点(深度学习大模型方向)

1. python中yeild和return的区别&#xff1f; 2. 介绍一下pytohn中的上下文管理器&#xff1f; 在Python中&#xff0c;上下文管理器&#xff08;Context Manager&#xff09; 是一种通过 with 语句管理资源的协议&#xff0c;确保资源&#xff08;如文件、数据库连接、线程锁…

六、重学C++—深入探索new delete

上一章节&#xff1a; 五、重学C—类(封装继承)-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146458436?spm1001.2014.3001.5502 本章节代码&#xff1a; cpp CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppstudy/tree/m…

Unity代码热更新和资源热更新

知识点来源&#xff1a;人间自有韬哥在&#xff0c;hybridclr,豆包 目录 一、代码热更新1.代码热更新概述2.HybridCLR 二、资源热更新1.资源热更新概述2.AB包2.1.AB包的加载2.2.卸载AB包2.3.加载AB包依赖包2.4.获取MD52.5.生成对比文件2.6.更新AB包 3.Addressable3.1.AssetRef…

于纷扰中寻静谧:正念观照的智慧之旅

在现代社会的快节奏浪潮中&#xff0c;我们仿若被裹挟前行的浮萍&#xff0c;生活的压力与信息的洪流冲刷着内心的宁静&#xff0c;焦虑与迷茫如影随形。而正念观照&#xff0c;恰似一叶扁舟&#xff0c;能引领我们在心灵的海洋中回归自我&#xff0c;探寻那片澄澈之境。 正念…

环境评价分析中土地利用现状图的制作方法

在环境评价中&#xff0c;土地利用现状图是重要的基础图件&#xff0c;用于分析项目区域的土地利用类型、分布格局及其生态环境特征。 以下是制作土地利用现状图的详细步骤和方法&#xff1a; 一、前期准备工作 确定制图范围和比例尺 根据评价范围确定制图区域边界 常用比例…

编程题记录3

九宫幻方 题目链接&#xff1a;https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&second_category_id3&tags%E7%9C%81%E8%B5%9B&tag_relationintersection 先旋转、镜像得到所有的情况&#xff0c;可以发现情况是可以暴力得出的。…

sql语句给表添加一个递增列

SSMS–》视图-》数据库(表)-》新建查询 ALTER TABLE [表名] DROP COLUMN ID ALTER TABLE [表名] ADD ID INT IDENTITY(1,1)执行完以上操作&#xff0c;会在表的最后一列添加一个自增字段 接下来如何把最后一个字段放到第一个字段呢&#xff1f; 假如sqlserver 表test 有以下…

vue java 实现大地图切片上传

文章目录 一、项目背景二、页面三、代码1.前端2.mock-i18n.js文件3.xx.js文件定义方法4.配置文件 application.properties5.后端方法 四、易错点易错点1&#xff1a;前端要进行分片切割&#xff0c;然后再分片上传。易错点2&#xff1a;后端配置文件要配置。易错点3&#xff1a…

langchain+ollama+deepseek的部署(win)

ANACONDA 安装 官网&#xff1a;Download Anaconda Distribution | Anaconda 配置系统环境 在系统变量中配置 检查是否配置成功 通过 cmd 窗口输入&#xff1a; conda info 如图&#xff1a;表示成功 配置你的虚拟环境 二、安装 ollama allama 安装 官网地址&#xff1a…

deepseek实战教程-第四篇开放平台接口文档使用

第二篇讲解了如何本地安装大模型&#xff0c;然后编写一个基于jsspringboot的项目&#xff0c;通过页面实现对话的功能。实际上&#xff0c;上面的demo用到是deepseek提供的接口&#xff0c;那么deepseek共提供了多少接口呢&#xff1f;这就要讨论到deepseek的接口库了&#xf…

一站式电脑工具箱,功能全面且实用

小明工具箱是一款集成了系统设置、维护工具、实用工具、图像处理等四大类工具的电脑工具箱&#xff0c;涵盖了上百种实用工具&#xff0c;能够满足用户在文件管理、文本处理、系统优化、图像处理等多方面的需求。 初次使用&#xff0c;需双击软件&#xff0c;便会自动将工具解压…

那些正常的动态规划

文章目录 前言动态规划到底是啥&#xff1f; 线性dp最长上升子序列子集和子序列和子串的区别内容分析 最大上升子序列例题1——[NOIP2004 提高组] 合唱队形分析 最长公共子序列最长公共子串 平面dp例题2——[NOIP2000 提高组] 方格取数分析 例题3——[NOIP2008 提高组] 传纸条分…

华为交换相关

端口模式 &#xff08;1&#xff09;access&#xff1a;只能属于单个VLAN&#xff0c;一般用于连接计算机端口 &#xff08;2&#xff09;trunk&#xff1a;端口允许多个VLAN通过&#xff0c;可以接收和发送多个VLAN报文&#xff0c;默认情况下只有管理VLAN不携带标签信息 &…

Chrome Performance 面板完全指南:从卡顿到丝滑的终极调试术

1.写在前面 前端性能调试是优化网页加载速度和运行效率的关键步骤&#xff0c;Chrome DevTools 的 Performance 面板 是核心工具; 2.Performance 面板使用步骤 ★ 基础 打开面板 在 Chrome 中按 F12 → 切换到 Performance 标签页。 开始录制 方式一&#xff1a;点击 ⚫️ 圆…

JDK 24:Java 24 中的新功能

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;历代文学&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;高并发设计&#xf…

ubuntu服务器server版安装,ssh远程连接xmanager管理,改ip网络连接。图文教程

ventoy启动服务器版iso镜像&#xff0c;注意看server名称&#xff0c;跟之前desktop版ubuntu不一样。没有gui界面。好&#xff0c;进入命令行界面。语言彻底没汉化了&#xff0c;选英文吧&#xff0c;别的更看不懂。 跟桌面版ubuntu类似&#xff0c;选择是否精简系统&#xff0…

python机器学习——新手入门学习笔记

一&#xff0c;概论 1.什么是机器学习 定义&#xff1a; 机器学习是从数据中自动分析获得模型&#xff0c;并利用模型对未知数据进行预测。 其实就是通过问题和数据&#xff0c;发现规律&#xff0c;并进行预测&#xff0c;与人脑相似。目的就是从历史数据当中获得规律&#x…

LabVIEW 与 PLC 通讯的常见方式

在工业自动化和数据采集系统中&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09; 广泛用于控制和监测各种设备&#xff0c;而 LabVIEW 作为强大的图形化编程工具&#xff0c;常用于上位机数据处理和可视化。为了实现 LabVIEW 与 PLC 的高效通讯&#xff0c;常见的方法包…

深度学习 Deep Learning 第9章 卷积网络 CNN

深度学习 Deep Learning 第9章 卷积网络 章节概述 本章深入探讨了卷积网络的原理、变体及其在深度学习中的应用。卷积网络通过卷积操作实现了参数共享和稀疏连接&#xff0c;显著提高了模型的效率和性能。本章首先介绍了卷积操作的基本形式及其在不同数据维度上的应用&#x…

Tekton系列之实践篇-从触发到完成的完整执行过程

以下介绍的是基于 Gitee 仓库 的 Tekton 工作流程 操作流程 定义task 克隆代码的task # task-clone.yaml apiVersion: tekton.dev/v1beta1 kind: Task metadata:name: git-clone spec:workspaces:- name: source # 工作目录params:- name: repo-url # 你的 Gitee 仓库地址…