1chunghu/eve-ng-capture-handler

GitHub: 1chunghu/eve-ng-capture-handler

一个轻量级的 Linux 桌面 URL handler,让 EVE-NG web UI 的 Capture 按钮能够通过 SSH 和管道在本地 Wireshark 中实时显示网络抓包数据。

Stars: 0 | Forks: 0

# eve-ng-capture-handler 让 EVE-NG web UI 中的 **Capture** 按钮在 Linux 上打开一个实时的 **Wireshark** 窗口。 EVE-NG 的 web UI 通过打开一个自定义协议的 URL 来启动抓包: ``` capture:/// ``` 官方提供的用于注册此协议的“客户端包”适用于 Windows 和 macOS。而在 Linux 上你什么都没有——点击 *Capture* 会毫无反应,或者你的浏览器会询问如何处理 `capture://` 链接。 这个仓库就是缺失的那一环:一个微型的 URL 处理程序,它可以: 1. 解析 `capture://` URL, 2. 通过 SSH 登录到 EVE-NG 主机,并在请求的接口上运行 `tcpdump -U -s0 -w -`, 3. 将 pcap 流通过管道传输到本地的 `wireshark -k -i -`(实时捕获模式)。 无需代理,也无需在 EVE-NG 虚拟机上运行额外的服务——只需 SSH 和管道。 ## 环境要求 - 遵循 freedesktop 规范(`xdg-mime`)的 Linux 桌面环境,任何发行版/桌面环境(DE)均可 - 在本地安装了 `wireshark`(Qt 版本的 GUI) - 拥有登录 `root@` 的 SSH **密钥**权限(该处理程序是在浏览器点击的后台运行的——没有地方让你输入密码,因此它使用了 `BatchMode=yes`,如果未配置密钥认证,则会快速失败) - EVE-NG 主机上安装了 `tcpdump`(默认已安装) ## 安装 ``` # 1. 处理程序脚本,位于你 PATH 的某个位置 install -Dm755 eve-ng-capture.sh ~/.local/bin/eve-ng-capture.sh # 2. 声明 capture:// scheme 的 .desktop 条目 install -Dm644 eve-ng-capture.desktop \ ~/.local/share/applications/eve-ng-capture.desktop xdg-mime default eve-ng-capture.desktop x-scheme-handler/capture # 3. 到 EVE-NG host 的基于密钥的 SSH(默认 root 密码是 "eve") ssh-copy-id root@ # 4. 让你的用户无需 root 即可运行 captures(Debian/Ubuntu:通过 # dpkg-reconfigure wireshark-common 实现相同思路) sudo usermod -aG wireshark "$USER" ``` 然后在 EVE-NG web UI 中,点击正在运行的节点接口上的 **Capture**。 你的浏览器会询问一次是否使用 *EVE-NG Capture* 打开该链接; 之后,数据包就会直接流入 Wireshark。 ## 注意事项(全是血泪教训) - **组成员身份在进程启动时就已固定。** 将自己添加到 `wireshark` 用户组后,你**必须注销并重新登录**——仅在当前会话中 重启浏览器是不够的,否则 dumpcap 会持续报出权限错误,让你误以为是处理程序坏了。 - `.desktop` 文件中的 `Exec=eve-ng-capture.sh %u` 会根据你当前会话的 `$PATH` 来进行解析。如果你的桌面环境提供给桌面条目的 PATH 中不包含 `~/.local/bin`,请改在 `Exec=` 中使用绝对路径。 - 抓包会一直进行,直到你在 Wireshark 中停止它或关闭窗口;随着 SSH 连接断开,远端的 `tcpdump` 也会自动终止,EVE-NG 主机上不会留下任何正在运行的进程。 - `StrictHostKeyChecking=accept-new` 会在首次连接时信任实验主机,但如果其密钥日后发生更改,依然会触发警告。对于通过 NAT 隔离的实验虚拟机来说,这是一个合理的权衡;如果你的 EVE-NG 主机可以被他人访问,请收紧该配置。 ## 为什么在这里使用 root SSH 连接实验虚拟机是可以的 EVE-NG 自带的包装器是以 root 身份运行的,并且抓包接口(`vunl*`)存在于宿主机的 namespace 中,因此 `tcpdump` 本身就需要 root 权限。通常的部署方式是将其作为在你自己机器上通过 NAT 隔离的实验虚拟机——请根据实际情况配置密钥的适用范围,并且不要将其复用于任何重要的场景。 ## 许可证 MIT
标签:内存分配, 应用安全