Document the complete authentication flow, session lifecycle, message queue IPC, and permission system. Key findings: - Authentication: VNC type 0x10, ATEN-modified challenge/response with plaintext username/password, web SSO via /tmp/sess_* files, fallback to IPMI UtilAuthUser - ServerInit: standard RFB fields + ATEN extension with session_id and 4 permission bytes mapped from IPMI privilege levels - Session lifecycle: accept loop, per-session thread with Stream/ RFBProtocol construction, max session enforcement, peer notification - POSIX message queues: /<thread_id_hex>, 0x104-byte messages with 7 known command codes for inter-session communication - Permission filter: message type to permission byte mapping, GetFilterLen payload size table for all 20 message types - SessionContext (0x50 bytes) and PrivilegeInfo (0x164 bytes) layouts - 25 new functions mapped, 12 existing entries updated Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| crates | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| flake.lock | ||
| flake.nix | ||
| ghidramcp_client.sh | ||
| ghidramcp_server.sh | ||
| KVM_PROTOCOL.md | ||
| MOUNT_PROTOCOL.md | ||
| README.md | ||
| REVERSING_CLIENT.md | ||
| REVERSING_SERVER.md | ||
aten-ipmi-tools
Open-source replacements for the ancient, insecure bundled management app shipped with old IPMI interfaces. Protocols were reverse engineered from the original Java client and native libraries as well as the server BMC firmware — see KVM_PROTOCOL.md, MOUNT_PROTOCOL.md, REVERSING_CLIENT.md and REVERSING_SERVER.md.
The target is Supermicro X9 boards with Nuvoton WPCM450 IPMI (aka "hermon"), but this likely works with other ATEN/ASpeed/Nuvoton IPMI implementations too.
Tools
aten-mount-cli
Mounts a local ISO image as a virtual CD-ROM on the BMC. Works by emulating a USB Mass Storage device over the ATEN virtual media TCP protocol.
aten-mount-cli [OPTIONS] <HOST> <ISO>
Options:
-u, --user <USERNAME> BMC username [default: admin]
-p, --pass <PASSWORD> BMC password [default: admin]
--port <PORT> BMC virtual media port [default: 623]
Press Ctrl+C to cleanly unmount.
aten-gui
KVM console viewer (Slint + winit). Connects to the BMC via the ATEN RFB protocol, decodes Hermon video frames, and displays the remote console with keyboard input.
aten-gui [OPTIONS] <HOST>
Options:
-u, --user <USERNAME> BMC username [default: admin]
-p, --pass <PASSWORD> BMC password [default: admin]
--port <PORT> BMC KVM port [default: 5900]
Building
cargo build --release
# or
nix build .#aten-mount # CLI tool
nix build .#aten-gui # GUI app