Skip to content

Can see everything, beware of its omniscience, kneel before its greatness.

Notifications You must be signed in to change notification settings

Just1truc/Argos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Can see everything, beware of its omniscience, kneel before its greatness.

Summary

Presentation

Main goal

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.

How it works

There is 2 main parts to this project:

  • The online server
  • The client

Client side

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.

Server side

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

Compatibility

Client OS:

OS Compatible ?
Windows 🔨(soon)
Debian based
Fedora
Arch ⚠️(Python is needed)
Mac OS

Installation

⚠️ :Installation scripts are being written. While waiting for it to be added, you can use the on time clients

To launch them individually, you can just use the command below.

⚠️ Note that the program will ask you for you password and the server url of the backend server in order to know where to connect

Linux

chmod a+x one_time_client && ./one_time_client

Windows

.\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.

Credits:


Justin Duc

Client side and Backend

 

Baptiste Leroyer

Frontend Developper

 

Léo Dubosclard

DevOps Developper

 

Joshua Brionne

Frontend Developper

 

Paul Laban

Frontend Developper

 

Mathias André

Stability responsible

 


⚠️ Do not use for illegal purposes

THIS PROJECT IS IN PROGRESS. It's FUNCTIONNAL but it's not as securised as it should be