当前位置: 首页 > news >正文

如何在 Kali 上解决使用 evil-winrm 时 Ruby Reline 的 quoting_detection_proc 警告

在使用 Kali Linux 运行 Ruby 工具(例如 evil-winrm)时,你可能会遇到以下警告:

Warning: Remote path completions is disabled due to ruby limitation: undefined method 'quoting_detection_proc' for module Reline

在这里插入图片描述

这个警告会导致远程路径补全功能被禁用,影响使用体验。本文将解释问题的原因,并提供一个简单快速的解决方案——在 Kali Linux 上运行 gem install readline-ext,即可解决问题。

问题背景

从 Ruby 3.0 开始,Ruby 默认使用 Reline 库处理终端输入,取代了传统的 Readline 库。Reline 是纯 Ruby 实现,但缺少 Readline 的一些功能,例如 quoting_detection_proc 方法。

quoting_detection_proc 用于在 tab 补全时处理带引号的字符串(例如,补全包含空格的文件路径)。像 evil-winrm 这样的工具依赖这个方法来实现远程路径补全,但 Reline 不支持它,因此触发警告并禁用补全功能。

问题原因

  1. Reline 的局限性

    • Reline 尚未实现 Readline 的所有 API,尤其是 quoting_detection_proc,导致依赖该方法的工具无法正常工作。
  2. 工具的依赖

    • evil-winrm 在实现 tab 补全时会检查 quoting_detection_proc 的支持情况。如果不支持,就打印警告并禁用远程路径补全。
  3. Kali 的环境

    • 虽然 Kali 默认包含 Readline 库(如 libreadline8),但 Ruby 默认优先使用 Reline,需要手动切换到 Readline

解决方案

好消息是,Kali Linux 已经包含了必要的 Readline 库,只需安装 readline-ext gem 即可让 Ruby 使用原生的 Readline,从而恢复 quoting_detection_proc 支持。

步骤 1:安装 readline-ext Gem

  1. 打开终端,运行以下命令:

    gem install readline-ext
    
    • 这会安装 readline-ext gem,它会调用系统提供的 Readline 库,优先于 Reline
  2. 等待安装完成,通常只需几秒钟。

步骤 2:验证安装

确认 readline-ext 是否正确加载:

  1. 启动 Ruby 交互模式:

    irb
    
  2. 输入以下代码:

    require 'readline'
    puts Readline.respond_to?(:quoting_detection_proc)
    
    • 如果输出 true,说明 Readline 已成功启用,支持 quoting_detection_proc

步骤 3:测试工具

evil-winrm 为例,重新运行你的工具:

evil-winrm -i <目标IP> -u <用户名> -p <密码>
  • 警告应该消失。
  • 测试 tab 补全功能,例如输入 dir C:\Pro 后按 tab 键,确认是否能正确补全路径(如 C:\Program Files)。

如果问题仍未解决

在极少数情况下,如果你仍然看到警告,可能是以下原因:

  1. Ruby 环境问题

    • 确认当前 Ruby 版本:
      ruby -v
      
    • 如果使用 rbenvrvm,确保 readline-ext 安装在正确的 Ruby 环境中:
      gem list | grep readline-ext
      
  2. 缺失系统库

    • 虽然 Kali 通常包含 Readline 库,但可以确认是否安装:
      dpkg -l | grep libreadline
      
    • 如果未找到相关包,安装 libreadline-dev
      sudo apt-get update
      sudo apt-get install libreadline-dev
      
    • 然后重新运行 gem install readline-ext
  3. 工具特定问题

    • 检查工具(如 evil-winrm)的版本是否最新:
      gem update evil-winrm
      
    • 查看 GitHub 仓库是否有相关修复。

其他替代方案

如果你不想安装 readline-ext,可以考虑以下选项:

  1. 忽略警告

    • 如果远程路径补全不重要,可以直接忽略警告。它不会影响工具的核心功能(如连接或命令执行)。
  2. 修改工具代码

    • 编辑工具源代码,绕过对 quoting_detection_proc 的检查。这需要 Ruby 编程经验,且可能导致补全功能不完整。

注意事项

  • 保持更新:定期检查 Reline 和工具的更新。未来 Reline 可能支持 quoting_detection_proc,彻底解决此问题。
  • Docker 环境:如果在 Kali 的 Docker 容器中运行,可能需要确保容器内有 Readline 库或直接安装 libreadline-dev
  • 社区支持:如果问题持续,可以在工具(如 evil-winrm)或 Reline 的 GitHub 仓库提交 issue。

总结

在 Kali Linux 上,只需运行 gem install readline-ext,你就可以轻松解决 Relinequoting_detection_proc 警告,恢复远程路径补全功能。这个方法简单高效,适用于大多数 Kali 用户。

希望这篇博文能帮你快速解决这个小麻烦!如果有其他问题,欢迎随时交流。

相关文章:

  • DeepSeek模型剪枝策略是什么?如何让AI更轻更快更聪明!
  • 从零到一:网站设计新手如何快速上手?
  • GRPO训练器 文档
  • argparse
  • LeetCode 第54~55题
  • CentOS 操作系统下搭建 tsung性能测试环境
  • TCP实现多线程远程命令执行
  • TCP粘包:数据为何‘难舍难分’?拆解底层原理与实战解决方案
  • 解释`new`关键字的执行过程,并手动实现一个`myNew`函数。
  • Vue快速入门
  • pandas中curr函数报错ValueError: could not convert string to float: ‘RL‘解决办法
  • 《Operating System Concepts》阅读笔记:p700-p732
  • Vue3+TS快速学习
  • 【Python使用】嘿马python运维开发全体系教程第4篇:四、Linux基本命令(上)【附代码文档】
  • 鸿蒙应用(医院诊疗系统)开发篇2·Axios网络请求封装全流程解析
  • Python单例设计模式深度解析
  • 统计分析相关基础概念解释
  • 预警,曾TRO冻结超500店,高地牛再维权
  • 信息化项目交付为什么越来越难?
  • [随笔杂谈] 计算机编程 —— 环境变量究竟是个什么东西?我该如何配置它?
  • 建设网站考证/优化大师如何删掉多余的学生
  • 在万网申请的域名_需要把万网的账户密码给做网站的吗/seo优化软件
  • 哪个网站能把图片拼凑起来做gif的/做网站的步骤
  • 如何自己做淘宝网站/网站模版
  • 建网站用html/哪有培训seo
  • 网站ipc备案/seo网络推广有哪些