motoham88/everyware-linux

GitHub: motoham88/everyware-linux

Green Heron 远程天线开关面板的 Linux curses 客户端,基于逆向解析的 TCP 协议实现天线矩阵的远程可视化操作。

Stars: 0 | Forks: 0

# GHClient 一款用于 Green Heron 远程天线开关面板的 Linux 客户端 —— 这是一个基于 curses 的 TUI,用于操作 4 开关 × 9 天线矩阵,通过设备的未公开 TCP 协议在端口 10000 上进行通信。 ``` ./gh-panel 192.0.2.10 # your switch's address export GH_SWITCH_HOST=... # ...or set this and just run ./gh-panel ``` ``` Green Heron switch panel — 192.0.2.10:10000 connected 0m08s Antenna AS-84F-1 AS-84F-2 AS-84F-3 AS-84F-4 Beam-10 · · · · Beam-15 · · · · Beam-20 · · · · EFHW-40 · · · · ... OFF ● ON ● ON ● ON ● ON ``` `↑↓` 端口 · `←→` 开关 · `⏎` 选择 · `o` 关闭 · `r` 原始协议 · `q` 退出 `--dry-run` 在不发送任何数据的情况下测试面板。`--no-keepalive` 会省略 官方客户端发送的 5 秒 NUL 数据。 ## 状态 工作正常。协议已在双向完成解码并针对硬件进行了验证: 此客户端的 `SET_SWITCH` 数据字节与官方 GH Everyware Client 完全一致,且设备对两者的响应也完全相同。 - 所有四个开关的实时状态,每约 0.5–3.4 秒刷新一次 - 天线选择,由设备在约 123 毫秒内确认 - 锁定显示 —— 被其他开关占用的天线标记为 `◦ N` - 带有退避机制的重连;最后已知状态保持可见,并标记为已过期 有两个 `SWITCHADD`/`SWITCHUPDATE` 字段的含义未知,因此以原始数据显示, 而不是随意猜测。有关完整协议和其余未知内容,请参阅 NOTES.md。 ## 结构布局 | | | |---|---| | `greenheron/protocol.py` | 帧划分与记录解析 —— 纯净代码,无 I/O | | `greenheron/client.py` | socket、状态跟踪、重连、keepalive | | `greenheron/tui.py` | curses 面板 | | `ghprobe.py` | 以 hexdump 输出设备发送的任何数据 —— 调试 oracle | | `tools/` | pcap 提取与协议实验 | | `NOTES.md` | 协议、每项结论的验证方式以及开放性问题 | ## 测试 ``` python3 -m venv .venv && .venv/bin/pip install pytest .venv/bin/python -m pytest tests/ ``` Protocol fixture 是直接从设备捕获的原始字节,而非手动编写。 连接测试针对本地替身服务器运行,其中包括逐字节交付的记录以及会话中途断开连接的情况。 无需硬件。 文档中的地址使用 `192.0.2.10` —— 这是 RFC 5737 文档规定的地址范围,而非真实 主机。 ## 许可证 MIT。与 Green Heron Engineering 没有任何附属关系或受其认可;该协议是 通过观察其客户端与其设备之间的流量来确定的,目的是为了实现互操作性。
标签:Python, TUI, 业余无线电, 云资产清单, 安全规则引擎, 客户端, 无后门, 逆向工具, 逆向工程