Thread obsoleto Tool di gestione remota con socket asincroni in C#

System32

Utente Stellare
Autore del topic
2 Gennaio 2010
15.554
112
Miglior risposta
0
Buonasera. Era da tanto che non toccato il C#. Ricordandomi di essermi imposto di scrivere un'applicazione che utilizzasse i socket in modo asincrono oggi pomeriggio, di buon cuore, ho messo mano a Visual Studio ed è uscita qualcosa di veramente carino. Ho deciso di scrivere un tool di gestione remota, in pratica, anche se si capisce cosa sia, il server gira sulla macchina che l'utente - che si troverà su un altra macchina - vuole controllare. Attenzione però, non è una backdoor o un programma che permette l'uso malevolo del computer sul quale gira il server. Il programma sarà utile, non sarà un programma che permetterà di inviare uno screenshot dello schermo. La prova di quanto vi dico proviene dal fatto che ho scritto il programma come Applicazione Console perciò niente interfaccia grafica. L'utente scriverà dei comandi e questi verranno eseguiti. Perché allora ho usato i socket asincroni ? Perché il server dovrebbe accettare più di una connessione ? La risposta è semplice : con questo progetto ho intenzione di permettere all'utente di portarsi l'applicazione su qualsiasi computer lui voglia, eliminando il seguente problema : supponendo che il server accetti solo una connessione l'utente, lasciando aperto il programma in connessione, non potrà accedervi da nessun altro computer e questa io la vedo come una grande limitazione. Con i socket asincroni invece l'utente potrà eseguire qualsiasi comando da qualsiasi computer. Per adesso il programma è in fase di sviluppo, vorrei che mi deste consigli su cosa potrei aggiungere, io fino ad adesso non ho avuto molta fantasia ma sono sotto esami quindi è comprensibile. Una volta finito il programma non rilascerò il sorgente. Passando ai fatti, vi mostrerò come opera per adesso il programma in fase di connessione tra uno e più client, in fase di invio dati - con controllo se i dati inviati sono comandi o semplice testo - con un client e con più client, in fase di esecuzione dei comandi e infine in fase di chiusura della connessione con un client e con più client.

Connessione con un client

v7bj1i.png
28tfb80.png

Connessione con più client

o5onz9.png

Invio dati con un client

rus8ia.png

Invio dati con più client

4v4il1.png

NB : L'invio del comando setcursor,x,y non posso farvelo vedere per ovvi motivi, dovrei fare un video. Comunque come potete intuire setta le coordinate del mouse in un determinato punto. Non è utile a niente, l'ho inserito come comando per testare il programma.

Chiusura della connessione con un client

14qro3.png

Chiusura della connessione con più client

2qthhdl.png

Per adesso questo è quanto.

EDIT : Al momento il tool esegue questi comandi :

- setta le coordinate del mouse scelte dal client ( la toglierò come funzione dato che non ha alcuna utilità )
- crea un file il cui percorso e il cui nome viene scelto dal client
- cancella il file da un percorso, specificando il nome
- crea una directory
- visualizza il numero di file presenti in una cartella
- visualizza i file presenti in una cartella con la possibilità di scegliere se utilizzare la ricorsione o no

Datemi suggerimenti su cosa poter aggiungere oltre a quello che ho in mente e che, si spera, mi verrà più avanti.
 
Ultima modifica:
Da come lo hai descritto e dagli screen, è davvero un gran bel progetto. Mi ricorda molto la Release di @TBH

Porca miseria, proprio ora che si parla di socket non posti il sorgente. Ma sparati proprio nelle caviglie :P
 
Da come lo hai descritto e dagli screen, è davvero un gran bel progetto. Mi ricorda molto la Release di @TBH

Voglio che esca fuori un bel programma, tutto qui.

Porca miseria, proprio ora che si parla di socket non posti il sorgente. Ma sparati proprio nelle caviglie :P

Dietro quelle righe di codice che ho scritto ci sono argomenti complessi, argomenti che una volta assimilati sono un giochetto perciò non posterò niente di questo programma. Al massimo se qualcuno volesse provarlo così com'è per adesso potrà farlo con TeamViewer sul mio computer.
 
Ultima modifica:
Voglio che esca fuori un bel programma, tutto qui.



Dietro quelle righe di codice che ho scritto ci sono codice complesse, cose complesse che una volta assimilate sono un giochetto perciò non posterò niente di questo programma. Al massimo se qualcuno volesse provarlo così com'è per adesso potrà farlo con TeamViewer sul mio computer.
Mi piacerebbe tanto scaricare la Release. Attendo l'uscita "ufficiale" patpat
 
Ti faccio davvero i miei complimenti per quanto riguarda il C e i derivati, questa tool sembra bella e utile dagli screen postati ti ricordo che c'è anche la SSH però per questo spero riuscirai a fare di meglio xD
 
Ti faccio davvero i miei complimenti per quanto riguarda il C e i derivati

Non capisco cosa vuoi dire ahah

questa tool sembra bella e utile dagli screen postati ti ricordo che c'è anche la SSH però per questo spero riuscirai a fare di meglio xD

Sì lo so che esiste il protocollo SSH ma qui si tratta di un'applicazione scritta in C# e che utilizza socket asincroni.
 
@System32 perché non aggiungere delle funzioni che monitorano proprio quello che il computer sta facendo? E' una funzione troppo oltre forse?
Intendevo, tipo la condivisione schermo. O magari un breve screenshot da parte del server che poi lo manda al computer cliente e lo salva sul desktop di quest'ultimo.
O magari utilizzare delle API per accendere la webcam e vedere chi c'è dall'altra parte. Ora tu hai strutturato il tutto in console, non so...
 
@HabboFanNumero1 Ci avevo pensato...e stavo anche pensando al fatto di "trasferire" il tutto su un form, per quanto riguarda il client. Il server può rimanere benissimo su console. Mi servono suggerimenti su cosa fargli fare.
 
@HabboFanNumero1 Ci avevo pensato...e stavo anche pensando al fatto di "trasferire" il tutto su un form, per quanto riguarda il client. Il server può rimanere benissimo su console. Mi servono suggerimenti su cosa fargli fare.

Ok, sulla base di questo potresti fare quel che ti ho scritto.

-Avere uno screenshot di ciò che mostra al momento il computer remoto.
-Attivare una condivisione dello schermo remota
-Spegnerlo a distanza (potrebbe essere una funzione molto utile, pensaci)
-Riavviarlo a distanza (magari all'avvio apri automaticamente il server)
 
Ok, sulla base di questo potresti fare quel che ti ho scritto.

-Avere uno screenshot di ciò che mostra al momento il computer remoto.
-Attivare una condivisione dello schermo remota
-Spegnerlo a distanza (potrebbe essere una funzione molto utile, pensaci)
-Riavviarlo a distanza (magari all'avvio apri automaticamente il server)

Lo screenshot ha senso ma la condivisione remota dello schermo no...a quel punto diventerebbe una backdoor. Spegnerlo da remoto ok ma riavviarlo non ha molto senso...perché dovrebbe essere riavviato se nessuno lo usa ?
 
Lo screenshot ha senso ma la condivisione remota dello schermo no...a quel punto diventerebbe una backdoor. Spegnerlo da remoto ok ma riavviarlo non ha molto senso...perché dovrebbe essere riavviato se nessuno lo usa ?

La connessione desktop remoto era utile per sapere se qualcuno lo stava usando mentre eri via e si stava facendo i cacchi tuoi su Facebook. E comunque, anche se fosse, è un sistema di sorveglianza a qualcosa di TUO quindi non ha nulla di male.
 
La connessione desktop remoto era utile per sapere se qualcuno lo stava usando mentre eri via e si stava facendo i cacchi tuoi su Facebook. E comunque, anche se fosse, è un sistema di sorveglianza a qualcosa di TUO quindi non ha nulla di male.

Per capire se il tuo computer viene utilizzato o meno basta controllare il mouse, dal momento che si suppone che il computer non venga toccato qualsiasi spostamento del mouse non è ammissibile quindi basta semplicemente bloccare l'input di mouse e tastiera. Se colui che lo utilizza se ne intende potrebbe spegnere il computer dal bottone e riavviarlo, in quel caso chi controlla il computer se ne accorgerà perché si chiuderà la connessione senza che sia stato inviato nessun comando al server.

NB : il mio programma teoricamente non avrebbe senso perché basterebbe impostare la password di Windows, però con il mio programma è possibile interagire con l'altra macchina.
 
NB : il mio programma teoricamente non avrebbe senso perché basterebbe impostare la password di Windows, però con il mio programma è possibile interagire con l'altra macchina.
Il senso lo ha. Fai finta che stai facendo l'aggiornamento di un software a cui tieni. Esci, vai da un tuo amico. Da lì ti connetti al server, richiedi a quest'ultimo uno screenshot et voilà puoi sapere a che punto sta l'aggiornamento.
 
Il senso lo ha. Fai finta che stai facendo l'aggiornamento di un software a cui tieni. Esci, vai da un tuo amico. Da lì ti connetti al server, richiedi a quest'ultimo uno screenshot et voilà puoi sapere a che punto sta l'aggiornamento.

Sì infatti, il discorso era riguardante la sicurezza non la funzionalità. Servirà per tante cose che ancora devo scoprire, per adesso mi concentro a sviluppare i punti di cui abbiamo discusso sopra. Se vuoi darmi una mano sei ben accetto.
 
Sì infatti, il discorso era riguardante la sicurezza non la funzionalità. Servirà per tante cose che ancora devo scoprire, per adesso mi concentro a sviluppare i punti di cui abbiamo discusso sopra. Se vuoi darmi una mano sei ben accetto.

Beh potresti anche modificare la data/ora a distanza, attivare/disabilitare connessione a internet, rimuovere hardware (ad esempio una chiavetta usb)...
 
Beh potresti anche modificare la data/ora a distanza, attivare/disabilitare connessione a internet, rimuovere hardware (ad esempio una chiavetta usb)...

Che senso ha modificare data e ora ? ahah Per quanto riguarda la connessione se la disabilito non posso più connettermi, se è disabilitata non posso lo stesso connettermi. Per la rimozione dell'hardware non capisco che utilità abbia, comunque per adesso porto il client su form e sviluppo i punti sopra poi si vedrà.
 
Che senso ha modificare data e ora ? ahah Per quanto riguarda la connessione se la disabilito non posso più connettermi, se è disabilitata non posso lo stesso connettermi. Per la rimozione dell'hardware non capisco che utilità abbia, comunque per adesso porto il client su form e sviluppo i punti sopra poi si vedrà.

La form la crei in C#.net?
Comunque tienici aggiornati quando aggiornerai (scusa se sono ripetitivo) il programma ^^