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
标签:内存分配, 应用安全