Can see everything, beware of its omniscience, kneel before its greatness.
This program was made to work on Linux distrubtion but will soon be adapted to Windows.
The main goal of this project is to make a remote control interface to use with the consent of the person whose pc is controlled.
There is 2 main parts to this project:
- The online server
- The client
Get to the client part
cd client/
The client side program is made using python3.
To start it you must have installed the dependencies. If you are too lazy to install them yourself, you can just use the one_time script present in client-side folders.
The client side is using socket io to connect with the server through web sockets. In case the server is not running, the program will try every 3 seconds to connect to the server until it's connected.
Once connected, the client script is waiting for instructions from the server. The instruction it can get are mostly commands. In order to run the commands, it's using a child process that is running a shell, writing in it's stdin using the file descriptor obtained through the pty.spawn command.
Once the child process is done running a command, it send a ALRM signal to its ppid so we can get the output of the command.
Get to the server part:
cd online_server
Front:
cd frontend
Backend:
cd server
The server is made in Node js. The backend is composed of 2 server :
The express JS server is meant to received the requests from the frontend server. Here are the routes of that server.
Route | Protected using JWT | TYPE |
---|---|---|
/login | NO | POST |
/clients | YES | GET |
/services/:id | YES | GET |
/services/:id/shell | YES | POST |
The socket server accept sockets and stock them in a global variable so the connexion can be used later on. The sockets are listenning to events and so we are using that so in case of deconnexion with a client, the client will automaticly be remove from the list.
The /shell endpoint use the socket io server sending a command to the client and waiting for a response to send back the information to the frontend.
FrontEnd endpoints:
Endpoint | Protected |
---|---|
/login | NO |
/clients | YES |
/services/:id | YES |
/services/:id/shell | YES |
Client OS:
OS | Compatible ? |
---|---|
Windows | 🔨(soon) |
Debian based | ✅ |
Fedora | ✅ |
Arch | |
Mac OS | ✅ |
To launch them individually, you can just use the command below.
chmod a+x one_time_client && ./one_time_client
.\one_time_windows_client.cmd
Also, to setup the server, it's kinda more complicated. You have to host both the front and the backend.
⚠️ Do not use for illegal purposes
THIS PROJECT IS IN PROGRESS. It's FUNCTIONNAL but it's not as securised as it should be