RemoteBox
RemoteBox is a multithreaded remote desktop application where client can authenticate with the remote system using a password and then view and control the remote desktop using the mouse and keyboard as well as chat and transfer files at the same time. No networking library used ,implemented a communication protocol over the TCP sockets for connectivity between system and multithreading to achieve concurrency
Install / Use
/learn @adarshsingh26/RemoteBoxREADME
RemoteBox
RemoteBox is a multithreaded remote desktop application where client can authenticate
with the remote system using a password and then view and control the remote desktop
using the mouse and keyboard as well as chat and transfer files at the same time.
No networking library used ,implemented a communication protocol over the TCP sockets
for connectivity between system and multithreading to achieve concurrency.
Table Of Contents
- Screenshots
- Tech Stack
- Features
- ToDo
- Who can use it?
- Repo contents
- Getting Started
- Overview of how the system works
- Tests
Screenshots
<img src="https://user-images.githubusercontent.com/84853854/148511209-2c3b9906-beb7-4e73-a460-a60bc145503e.png"/> <img src="https://user-images.githubusercontent.com/84853854/148511550-c53bb992-4e30-4b9f-b676-d71f289f36f6.png"/> <img src="https://user-images.githubusercontent.com/84853854/148514981-1a06ebe3-13b6-4cfb-a51f-1e5988595d2b.png"/> <img src="https://user-images.githubusercontent.com/84853854/148511993-fcce0bd7-0439-40d9-b6ea-d5f0d2a675fc.png"/> <img src="https://user-images.githubusercontent.com/84853854/148512240-848ad14e-ec19-4825-abe3-9fc1bdcca0ec.png"/> <img src="https://user-images.githubusercontent.com/84853854/148512852-f422f6ce-2b89-4597-abc4-4b96720cc940.png"/> <img src="https://user-images.githubusercontent.com/84853854/148513300-a6b6655c-bb73-467d-9970-2d28ac43eaa8.png"/> <img src="https://user-images.githubusercontent.com/84853854/148513511-c059fca9-eab3-4ee2-9b77-fc1d7c56195e.png"/> <img src="https://user-images.githubusercontent.com/84853854/148514253-a3ab8c0d-9636-46c1-ac89-287e080a565d.png"/> <img src="https://user-images.githubusercontent.com/84853854/148514780-333f35a2-c625-4c2b-bae8-7bbb52338da8.png"/>Tech Stack
- Backend:
Python 3.7 - GUI:
Tkinter
Features
- Authentication (Random password for each session)
- Multiple option for connectivity (LAN or WAN IP or using ngrok hostname)
- View remote desktop
- Control remote desktop using mouse(move,clicks) and keyboard(single keystrokes,hotkey)
- Chat with remote system
- File transfer(In progress)
- Disable remote desktop wallpaper for the session(Improves fps)
- Event Logs
- Connection Status(Listening for connection or Connection Established)
- Multithreaded application
Note: No files touch the disk , it runs within memory, hence improved performace and no disk usage.
ToDo
- File Transfer(Core Logic Done,working on custom file manager UI)
- Add to Startup
- Upnp Support
Who can use it
IT administrators,System admincould use it to maintain,transfer files or patch the system remotely.Any usercould use it as long as they want to access the system remotely.
Repo contents
server.py :- Contains functions for starting a listener on the system for incoming connections,generating random password for each sssion and live streaming the screen to the client and to simulate the mouse and keyboard commands recieved from the client and much more.client.py- It contains code for computing the display resolution in which to show the remote stream(client and server can have different display resoltuion).Hooking mouse and keyboard input and sending it to the server and much more.connection.py- Implemented a protocol on top of tcp sockets which ensures that communication between two systems is established.Both the client and server uses this to send/recieve any data.
Getting Started
- Clone repo
git clone https://github.com/adarshsingh26/RemoteBox.git
-
Download and install Python 3.8 and make sure to add the path of python into environament variable.
-
Lets create the virtual environment.
python -m venv c:\path\to\RemoteBox\myenv
- Change directory to root of project and activate the virtual environment.
cd c:\users\RemoteBoxmyenv\Scripts\activate
- Install the modules required to run the project
Navigate to root of projectpip install requirements.txt
- If u are the server then you ned to execute server.py
python server.py
- If client then
python client.py
Overview of how the system works
<p align="center"> <img src="https://user-images.githubusercontent.com/84853854/134013352-6e7c5415-825a-4c94-b17f-bf85622b4691.png" alt="client-server"/> </p>On server side:
-
Creates a
listenerfor incoming connections based on whether the user chose to listen on a ip or the hostname and then show the relevant information to the user, using which remote machines could connect to the system. -
Then once connection is established, it starts capturing the screenshot of desktop using
mss(fast screenshot capturing module), if remote desktop view requested by the client. -
Compressesthe screenshot within the memory usinglz4compression. -
Stores the
compressed imagein the queue. -
Gets the data from the
screenshot queueand sends it to the server. -
Concurrently the server recieves mouse,keyboard events from the remote machine and
simulatesthose actions onto the system.
On client side:
-
Client first gets the option to
loginto the remote system using its credentials. -
Once the connection is established user will be shown the options to
view remote desktop,chatorfile transfer. -
When user clicks the remote desktop view , he gets the prompt whether to
disable the backgroundimage or not and based on the response information is conveyed to the server. -
Now the client asks the server for its display resolution and then
compare and computes the client display window resolutionand shows the remote desktop. -
As the client starts interacting with the remote machine using mouse and keyboard, their
mouse co-ordinatesand key strokes are hooked and put into a queue and data from the queue isconcurently sentto the remote system. -
Mouse co-ordinates are
scaledif needed.
Note: This is just a short summary much more things are happening behind the scenes .Take a look at code to know more :)
Tests
- Tested on
Windows 7,8,10,11machine. - Even if the client or server looses the connection in between no error is thrown.(
Exception handlinghas been done properly).
Related Skills
node-connect
347.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
