Administrare de la Distanță - Utilitar - Vâlcea - Lucrari 2022 Nationala

Informatii generale

Descriere

Facilitează controlul de la distanță al altor calculatoare, cu scopul de administrare. Oferă un API de plugins care permite extinderea funcționalității programului prin module scrise de utilizator.

Tehnologii

Este un program server-client, serverul fiind administratorul si clientul fiind un calculator administrat.
Foloseste un protocol creat de mine pe TCP. Are criptare cu AES-256 (cu o parola predefinita si PBKDF2 pentru generarea cheii).
Foloseste serializare binara si se folosesc pools unde are sens, pentru a reduce alocarea.
Toate operatiile de I/O sunt asincrone si nu creaza sau blocheaza threaduri.

Programul are o structura modulara, toata functionalitatea fiind aflata in module, care pot fi create si de utilizatorii programului.
Aceste module sunt incarcate la runtime de catre server, si sunt trimise prin retea si incarcate pentru client. Programul este construit cu o arhitectura de dependency injection,
ceea ce usureaza mult dezvoltarea modulelor, prin reductia cuplarii intre dependente si accesul usor la sistemele serverului/clientului sau altor module.
Logica pentru client/server se afla in acelasi modul, ceea ce reduce managementul necesar.

Pentru interfata grafica, se foloseste randare cu dispozitivul grafic si un back-end (OpenGL, Direct3D11) a unei interfete generate dinamic (fara layout) numita Dear ImGui.
Am folosit SDL in loc de clasicul Win32API. Am folosit bindings si o abstractie grafica din ImGui.NET si Veldrid (libraries open-source, se poate gasi o lista
in repository). Am considerat să creez propriul meu window system, OpenGl/DirectX bindings, si immediate mode GUI, dar vreau să lucrez la alte proiecte.

Evenimentele de randare si input sunt trimise la module printr-un sistem de evenimente dinamic, care integreaza dependency injection si genereaza IL pentru functii la runtime.

Modulele incluse momentan:
- Remote Terminal → Command Prompt de la distanta
- Remote Desktop → vizualizarea ecranului de la distanta

Pentru codare video folosesc OpenH264 de la Cisco (proiect open-source) cu API de bindings si abstractie propriu. Folosesc si un encoder/decoder de YUV420P propriu.

Proiectul include teste pentru partile critice din sistemul de comunicatie, criptare, si serializare.

Cerinte sistem

Procesor: Orice procesor modern x64, putere de procesare slaba va limita performanta la remote desktop
Memorie: 256 de MB pentru client si server
Procesor grafic: Orice procesor grafic cu suport pentru OpenGL 3 sau DirectX 11, doar pentru server
Sistem de operare: Windows 10

Realizatori

Antonio Dumitrescu

  • Scoala: Colegiul Național “Alexandru Lahovari”
  • Clasa: 9
  • Judet: Vâlcea
  • Oras: Ramnicu Valcea

Screenshots