Skip to content
← All projects
Academic projectCoursework, delivered

TCP/IP Remote Administration Tool

Client-server remote administration tool built from raw TCP sockets — system info, screen capture and live mouse control over a custom protocol.

Role: Team project

Team

Team

Timeline

Nov 2025

Type

Academic

TCP/IP remote administration client GUI

01 · Context & Problem

What problem this solves

The IF4001 Operating Systems course required building a remote-administration tool from raw TCP sockets, without relying on an existing remote-desktop library or protocol.

02 · Solution

What it actually does

Two Python applications talking over a custom line-based TCP protocol: a server that runs on the remote machine, and a client with a customtkinter GUI for the controlling machine.

  • System info reporting: RAM, disk list with free/used space, screen resolution, current user, timezone, date/time and active processes.
  • Screenshot capture and transfer over the same socket, using a length-prefixed binary frame so image data can't be confused with text commands.
  • Live mouse control: move, left-click, right-click and double-click, sent from the client's GUI to the remote machine in real time.
  • Remote power actions: shut down, restart, log off, plus volume up/down/mute.
  • A multithreaded server so handling one client's commands never blocks the GUI or other connections.

03 · Architecture

Architecture & decisions

A line-terminated text protocol for commands (INFO_SISTEMA, MOUSE_MOVE x y, APAGAR, and similar), with a distinct binary framing (IMG <byte-count>\n<payload>) for screenshot transfers on the same connection.

Mixed text-and-binary protocol on a single TCP stream, length-prefixed for binary frames.

Keeps the protocol simple for text commands while still allowing large binary payloads (screenshots) without ambiguity about where a message ends.

04 · Stack

Full stack, by layer

Frontend

customtkinter

Backend

Pythonraw socketsthreading

External Services

psutilmssPillowpyautoguipynputpycaw (Windows)

05 · Challenges

Technical challenges solved

Mixing text commands and binary image data on one stream

Problem: Sending both plain-text commands and raw PNG bytes over the same socket risks one corrupting the parsing of the other.

Solution: Text commands are newline-terminated; image responses are framed with an explicit byte count read before the payload, so the receiver always knows exactly how many bytes to read regardless of content.

Cross-platform volume control

Problem: Windows and macOS have no common API for controlling system volume.

Solution: Used pycaw on Windows and an AppleScript-based fallback on macOS, isolated behind one function.

06 · Results

Results

Fully working remote administration tool meeting the course's requirements, tested across Windows and macOS.

No hard metrics confirmed yet for this project — the impact above is qualitative only.

07 · Retrospective

What I'd do differently

First hands-on look at how much protocol design matters once text and binary data share the same TCP stream — small framing mistakes silently corrupt the next message instead of failing loudly.

Have a system that needs building?

Tell me what you're running today and what's breaking. I'll tell you honestly whether I can help.