Expand description
RDP server — the TPKT + X.224 connection-negotiation slice of [MS-RDPBCGR].
Scope (be honest, per src/server/rdp/CLAUDE.md): this reads a client’s TPKT-framed X.224
Connection Request, parses the Cookie: mstshash= routing token and the RDP_NEG_REQ
(requestedProtocols), and answers with an X.224 Connection Confirm the LLM chooses —
RDP_NEG_RSP selecting a security protocol, or RDP_NEG_FAILURE. It STOPS there. It does not
implement MCS/GCC, the security exchange, the capability exchange, or any bitmap, so no
desktop frame is produced and a real client does not reach a session. A client completing the
negotiation is real, verifiable progress against [MS-RDPBCGR] 2.2.1.1/2.2.1.2 and nothing more
is claimed.
The negotiation decision is genuine LLM reasoning: which security protocol to select given what the client offered, or whether to demand one it did not (a rejection).
Modules§
- actions
- RDP server actions — the connection-negotiation slice of [MS-RDPBCGR].
Structs§
- RdpServer
- RDP server (negotiation slice).
Constants§
- MAX_
X224_ LEN - Largest X.224 Connection Request accepted, in bytes. A real CR is well under 512 bytes (routing cookie + RDP_NEG_REQ + optional correlation info); the TPKT length field is client-controlled, so it is bounded before anything is allocated.