Document initialization flow, kernel module internals, and remaining undocumented functions. Key findings: - main() is minimal: CreateServerSocket -> MainAcceptLoop, with C++ global constructors handling DeviceManager/session list init - DeviceManager construction (0xb63c): allocates three sub-devices - Shared memory init (0xdc10): GlobalVar, NVRAM, PS segments - vcddev.ko: NO ioctl interface — VCD registers accessed directly via /dev/mem mmap at 0xF0028000. Module only handles interrupt- based capture completion (IRQ 22, major 25) - ikvm_vmass.ko: USB VID=0x0EA0 PID=0x2168, Bulk-Only Mass Storage, 3 ioctls (register/disconnect/connect), dual-LUN support, userspace reads CBW and writes responses via char device - ~30 new functions documented: thread management, session cleanup, bandwidth throttling (select-based sleep), VCD utilities, message queue helpers - 5 new global variable addresses (session count, shared memory pointers, connection ref count, listen socket) 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