[ARCHIVE] Prise en main à distance inversée, avec VNC (RealVNC)

Ici se trouvent divers logiciels faits maison, ou des logiciels libres modifiés (c'est précisé dans ce cas).
Etre_Libre
Administrateur
Messages : 800
Inscription : 13 novembre 2012, 21:44

[ARCHIVE] Prise en main à distance inversée, avec VNC (RealVNC)

Message par Etre_Libre »

Note : ce tutoriel et logiciel est désormais une archive, il n'y a plus de suivi, mais vous pouvez toujours vous en inspirer et télécharger le code source.
(Depuis, je suis passé à AnyDesk, peu coûteux par rapport à TeamViewer, et très simple d'utilisation)


Introduction

Afin de répondre à mon utilisation de prise en main à distance (ou plutôt, aide à distance), j'ai créé un logiciel permettant de faciliter l'utilisation de VNC (RealVNC) en mode inversé.

Habituellement, VNC Server ou similaire s'installe sur l'ordinateur à dépanner, on configure un peu, et il y a aussi un port à ouvrir sur le routeur si c'est via internet.

Pour mon usage, j'ai eu besoin que les personnes puissent être aidées à distance, via VNC, sans pour autant avoir besoin d'ouvrir un port ou d'avoir des connaissances poussées en informatique.

En gros, cela m'a permis de créer un pack .exe (à faire passer via email ou autre à la personne), qui configure tout automatiquement, et se connecte à mon VNC Viewer.

Oui c'est peut-être peu habituel, mais dans ce fonctionnement là, c'est le VNC Server (la personne aidée) qui déclenche la connexion vers le VNC Viewer (le dépanneur).

Cela est possible car le VNC Viewer a un mode "écoute" (listening) qui permet justement de créer une connexion inversée.

Le VNC utilisé est RealVNC Connect, et j'ai tout testé avec la version 6.0.x pour Windows, compatible avec tous les Windows modernes dont Windows 10.

En terme de licence, pour une connexion directe il faut apparemment maintenant l'édition Enterprise (Payante, toutes les fonctions de la Pro + des fonctions pour entreprise dont la connexion directe).

Toutes les automatisations sont faites via AutoIt (langage simplifié), et le pack final est une archive autoextractible (via WinRAR, création d'un EXE qui lance ensuite l'installation).

Je mets à disposition le code source de mon logiciel, il est libre et gratuit.


Fonctionnement, et configuration

Au départ, il y a certaines choses à savoir pour créer ensuite le pack .exe tout prêt, car on le crée soi-même et avec sa propre configuration, adaptée à son usage.

Dans un 1er temps, installer VNC sur un Windows (une machine virtuelle par exemple, mais une réelle peut aller aussi, sachant que cette installation sera temporaire).

Fermer le VNC qui s'est éventuellement lancé comme Service, et lancer VNC en mode User (j'ai précisé comment en lançant "vnc_registre_vers_conf.exe") :

Aperçu de vnc_registre_vers_conf.exe :
Image

Et une fois que ce qui est demandé a été fait, on obtient alors :
Image

Ainsi, un fichier conf.ini vient d'être créé, contenant certains de vos paramètres VNC.

Lancer ensuite conf_admin.exe afin de configurer le logiciel :
Image

Explications de chaque option de la configuration :
- Nom d'hôte / IP Dépanneur 1 : nom d'hôte (DNS) ou adresse IP du PC du Dépanneur 1, ayant le VNC Viewer en mode écoute

- Port de VNC (TCP) Dépanneur 1 : Port choisi pour le VNC Viewer en mode écoute du Dépanneur 1 (mettre le même dans la configuration du Viewer, vue ensuite)

- Nom Dépanneur 1 : Ce nom apparaît une fois que la prise en main est lancée, voir ci-dessous :
Image

- 2ème Dépanneur : si vous avez plusieurs dépanneurs possibles, en activant cette option cela va laisser le choix à la personne dépannée de cliquer sur "Dépanneur 1" ou "Dépanneur 2" (les noms choisis apparaîtront).

- Nom d'hôte / IP Dépanneur 2 : nom d'hôte (DNS) ou adresse IP du PC du Dépanneur 2, ayant le VNC Viewer en mode écoute

- Port de VNC (TCP) Dépanneur 2 : Port choisi pour le VNC Viewer en mode écoute du Dépanneur 2 (mettre le même dans la configuration du Viewer, vue ensuite)

- Nom Dépanneur 2 : Ce nom apparaît une fois que la prise en main est lancée, comme indiqué précédemment.

- 3ème Dépanneur : si vous avez plusieurs dépanneurs possibles, en activant cette option cela va laisser le choix à la personne dépannée de cliquer sur "Dépanneur 1", "Dépanneur 2" ou "Dépanneur 3" (les noms choisis apparaîtront).

- Nom d'hôte / IP Dépanneur 3 : nom d'hôte (DNS) ou adresse IP du PC du Dépanneur 3, ayant le VNC Viewer en mode écoute

- Port de VNC (TCP) Dépanneur 3 : Port choisi pour le VNC Viewer en mode écoute du Dépanneur 3 (mettre le même dans la configuration du Viewer, vue ensuite)

- Nom Dépanneur 3 : Ce nom apparaît une fois que la prise en main est lancée, comme indiqué précédemment.

- Envoyer email informations : envoie ou non un email quand quelqu'un lance la prise en main à distance, afin de voir son IP et savoir que le logiciel a bien été lancé

- URL PHP Email (Avec Auth.) : URL du script PHP qui va déclencher l'email d'informations (nécessite authentification HTTP, à activer par exemple via un .htaccess et .htpasswd)
Exemple de code PHP possible :

Code : Tout sélectionner

<?php
If(isset($_SERVER['PHP_AUTH_USER'])) {
	If($_SERVER['PHP_AUTH_USER'] != "") {
		$expediteur = "monemail@mondomaine.fr";
		$destinataire = "monemail@mondomaine.fr";
		
		$msg = "IP : ".$_SERVER['REMOTE_ADDR']." et nom : ".gethostbyaddr($_SERVER['REMOTE_ADDR']);
		mail($destinataire, "VNC INV ".$_SERVER['REMOTE_ADDR'], $msg, "From: ".$expediteur);
	}
}
?>
- URL Logiciel EXE (Avec Auth.) : Facultatif. N'est utile que si on souhaite transmettre aux personnes à dépanner un exe très léger (dl_aide_distance.exe) qui ne fait que télécharger à chaque fois la dernière version de la prise en main à distance (nécessite authentification HTTP, à activer par exemple via un .htaccess et .htpasswd).
Ainsi plus besoin de s'occuper si quelqu'un a la dernière version, c'est toujours le cas, et se télécharge rapidement.

- URL Hash MD5 (Avec Auth.) : URL d'un fichier texte contenant le hash MD5 de l'EXE du logiciel, afin de vérifier son intégrité. Cela m'a déjà servi, car certains antivirus prennent AutoIt pour un virus, ce qui n'est pas le cas (nécessite authentification HTTP, à activer par exemple via un .htaccess et .htpasswd).
A ce compte là autant dire que C ou C++ sont des virus, ce qui est faux, ce ne sont que des langages de programmation.

- Identifiant Email et DL HTTP : Identifiant (login) pour l'authentification HTTP dont j'ai parlé pour l'envoi de l'email et pour le téléchargement de l'EXE et du hash MD5.

- Mot de passe Email et DL HTTP : Mot de passe pour l'authentification HTTP dont j'ai parlé pour l'envoi de l'email et pour le téléchargement de l'EXE et du hash MD5.

- Licence RealVNC : licence VNC à entrer ici, que ce soit la Free, Personal ou Enterprise.
Note : dans le conf.ini, le numéro de licence est chiffré, on ne peut le voir facilement qu'avec le programme conf_admin.exe, qui déchiffre la clé.
C'est une protection apparente, une belle façade, rien d'autre.

- Copier EXE dossier Windows : si actif, ce réglage copie l'exe dl_aide_distance.exe, si vous l'utilisez, vers le dossier de Windows, avec un nom paramétrable (voir ci-dessous).
Ainsi, lors d'un usage ultérieur, la personne n'a qu'à appuyer sur la touche Windows du clavier, et rentrer au clavier le nom du programme et valider, ou idem via Windows + R.

- Nom EXE dans dossier Windows (sans espace et .exe) : si vous avez coché le fait de copier l'exe dl_aide_distance.exe dans le dossier de Windows, alors il est copié avec le nom choisi ici.
Exemple : si le nom est "aidedistance" alors ça copiera avec le nom complet "aidedistance.exe".

- Désinstaller après usage : après avoir utilisé la prise en main à distance, au prochain redémarrage ça supprime le dossier de la prise en main et enlève le raccourci du Bureau.
Pratique si on ne s'en sert que de manière ponctuelle, avec toujours la dernière version.
Aussi, cela règle les problèmes de licence : comme VNC n'est installé en permanence sur aucun ordinateur, on peut très bien utiliser une licence 1 poste.
Par contre, s'il y avait plusieurs postes en même temps ou que le logiciel resterait installé sur plusieurs postes, je suggère d'acheter le nombre de licence nécessaire, du moins quand on utilise la version payante.

- Langue de RealVNC : Avec RealVNC Connect 6.0.x il est possible de choisir la langue de l'interface graphique, alors j'ai proposé le choix entre Français et Anglais.

Voilà, une fois cette configuration faite, le VNC Server peut être désinstallé.

Par ailleurs, il y a la configuration du Viewer aussi, en lançant conf_viewer.exe

Cela donne par exemple :
Image
L'executable du Viewer peut être extrait directement depuis l'installeur de VNC, j'en parlerai dans l'étape de création du package.

Et quand le Viewer est lancé (via lancer_viewer.exe), on obtient :
Image

Si dans la configuration vous avez choisi qu'il y ait plusieurs dépanneurs possibles (par exemple 3 dans la capture qui suit), voici ce qui apparaît côté personne dépannée quand la prise en main à distance se lance :
Image

Si la prise en main est lancée mais que côté dépanneur le Viewer en mode écoute n'est pas lancé, ou qu'il y a une erreur de configuration, cette erreur apparaît dans ce cas :
Image


Création de son propre package de prise en main, basé sur RealVNC

Tout d'abord, téléchargement des fichiers, pour le logiciel en version 2.3, du 04/03/2017 :
- aide_distance_inv.exe (archive RAR EXE, qui est à compléter avec certains de vos fichiers)
- extraire_realvnc.rar (logiciel pour extraire les fichiers directement depuis l'installeur de RealVNC, code source inclus)
- Fichiers_vnc_inv.exe (archive RAR EXE, qui est à compléter avec certains de vos fichiers)
- prise_main_inversee_realvnc_2.3_src.rar (code source de mon logiciel et icônes)

Puis, télécharger l'installeur de RealVNC, en version 6.0.x

Extraire les fichiers x86 ou x64 selon votre usage (pour ma part, j'ai choisi x86, pour ne pas avoir à demander l'architecture à chaque client).
Note : les archives RAR EXE que je fournis sont en x86, mais WinRAR est capable aussi de créer une archive RAR EXE x64.

Une fois les fichiers extrait, les intégrer à l'archive RAR EXE Fichiers_vnc_inv.exe, dans le dossier Prise_en_Main.

Voici la liste des fichiers de VNC dans mon cas, pour x86 :
- CloudConfig.pkg
- logmessages.dll
- saslib.dll
- vncagent.exe
- vncguihelper.exe
- vnclicense.exe
- vnclicensehelper.exe
- vnclicensewiz.exe
- vncpasswd.exe
- vncpipehelper.exe
- vncserver.exe
- vncserverui.exe
- wm_hooks.dll

Et en plus de ces fichiers, toujours dans l'archive RAR EXE Fichiers_vnc_inv.exe dans le dossier Prise_en_Main, on doit voir aussi les fichiers suivants, qui sont des scripts AutoIt compilés (des exe donc) :
- desinstaller.exe
- desinstaller_redemarrage.exe
- lancer.exe

Sauf modification de votre part dans le code source, les 3 EXE précédemment cités n'ont pas besoin d'être modifiés.

Ensuite, dans l'archive RAR EXE aide_distance_inv.exe, ajouter les fichiers suivants :
- conf.ini (paramétrage du logiciel, fait en 2 étapes)
- Fichiers_vnc_inv.exe

Dedans, il y a aussi "installer.exe", déjà présent. Sauf modification du code source de votre part, pas besoin de le modifier.

Votre package aide_distance_inv.exe est prêt désormais.

C'est le fichier à transmettre à la personne à dépanner à distance, et elle n'aura qu'à l'exécuter.

Du côté dépanneur, bien veiller à lancer auparavant le Viewer en mode écoute.
Note : le Viewer peut être extrait directement de l'installeur de RealVNC, en extrayant les fichiers x86, il y aura un fichier Viewer qui est un installeur, et là on peut à nouveau utiliser l'extraction via le logiciel que j'ai proposé, et on a le Viewer x86 ou x64 au choix.

Jusque là, il est encore possible de se passer d'un hébergement en ligne (accessible via HTTP) pour certains fichiers liés à la prise en main à distance, si on n'utilise pas l'envoi d'informations par email.

Par contre, dans la prochaine étape (facultative), ce ne sera plus le cas.

Etape facultative, pour que la personne ait toujours la dernière version

Afin que la personne ait la dernière version, et que le dépanneur n'ait pas à se demander si tout est à jour etc... s'il y a besoin, alors j'ai créé une méthode :

Un fichier exe léger dl_aide_distance.exe paramétré (contient le conf.ini) qui télécharge via HTTP le aide_distance_inv.exe mis en ligne, vérifie le hash MD5 de ce fichier, et l'exécute.

Bref aperçu :
Image

Via winMd5Sum (télécharger ici), créer le hash MD5 du fichier aide_distance_inv.exe, et le stocker dans un fichier texte, à l'URL choisie dans votre configuration.

Aperçu de WinMd5Sum :
Image

Une fois cela fait, déposer une copie du conf.ini à côté du code source dl_aide_distance.au3 (script AutoIt), et en compilant ce script (clic droit et compile, avec AutoIt installé), le dl_aide_distance.exe est créé et contient le conf.ini en mémoire.

Avec ce fonctionnement, il suffit de transmettre à une personne à dépanner uniquement le fichier dl_aide_distance.exe, qui va télécharger toujours la dernière version de la prise en main que vous aurez créé, va se copier dans le dossier de Windows si vous l'avez choisi, et déclenche la prise en main à distance.
Dernière modification par Etre_Libre le 27 janvier 2018, 21:46, modifié 15 fois.
Raison : Basculement en archive
Etre_Libre
Administrateur
Messages : 800
Inscription : 13 novembre 2012, 21:44

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par Etre_Libre »

Information :

RealVNC est sorti il y a quelques jours en version 5.1.x et j'ai remarqué que le logiciel maison "extraire_realvnc.rar" que je fournis n'arrive plus à extraire complètement les fichiers, il me faudra adapter le logiciel à la nouvelle structure de fichiers (car la version 5.1.x a quelques changements profonds).

Ce sera fait dans les semaines qui viennent, en fonction de mon temps libre.
Etre_Libre
Administrateur
Messages : 800
Inscription : 13 novembre 2012, 21:44

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par Etre_Libre »

Mise à jour du logiciel, compatible désormais avec RealVNC 5.1.x (la compatibilité avec RealVNC 5.0.x est stoppée en même temps, la structure pour extraire les fichiers n'est pas du tout la même).

Si votre licence RealVNC a encore du support de mises à jour, vous pouvez passer en version 5.1.x sans aucun problème.

Aussi, j'ai ajouté un réglage qui supprime les futures demandes de mises à jour, afin que votre logiciel "maison" ne demande pas cela en pleine prise en main à distance.

Enfin, j'ai modifié un peu le code source de mon logiciel pour l'adapter avec le dernier AutoIt 3.3.10.0 (directives #pragma).
Etre_Libre
Administrateur
Messages : 800
Inscription : 13 novembre 2012, 21:44

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par Etre_Libre »

Mise à jour du logiciel :

- Compatibilité avec RealVNC 5.2.x (et encore 5.1.x normalement)
- Réglage du nom de l'EXE "aidedistance" si on choisi qu'il se copie dans le dossier Windows
- Réglage de la langue de l'interface de RealVNC (Français ou Anglais, uniquement à partir de RealVNC 5.2.x)
Etre_Libre
Administrateur
Messages : 800
Inscription : 13 novembre 2012, 21:44

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par Etre_Libre »

Mise à jour :

- Modifications afin que l'élévation de droits soit demandée automatiquement (si UAC de Windows actif)
- Ajout de la possibilité d'avoir jusqu'à 3 dépanneurs possibles, au choix dans la configuration

Aussi, veuillez revalider / saisir à nouveau dans votre configuration, même si vous n'aviez qu'un dépanneur :
- Nom d'hôte / IP Dépanneur
- Port de VNC
- Nom du Dépanneur

En effet, des noms de variables ont changé.

Enfin, j'ai modifié la façon dont se désinstalle la prise en main après redémarrage de l'ordinateur (si on choisit de la désinstaller) afin que ça ne demande pas d'élévation de privilèges au démarrage de l'ordinateur (via le planificateur de tâches).
Etre_Libre
Administrateur
Messages : 800
Inscription : 13 novembre 2012, 21:44

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par Etre_Libre »

Mise à jour mineure :

- Code source inchangé
- Recompilation simple vers le dernier AutoIt
- Vérification du bon fonctionnement avec RealVNC 5.3.x
- Vérification du bon fonctionnement avec Windows 10
Etre_Libre
Administrateur
Messages : 800
Inscription : 13 novembre 2012, 21:44

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par Etre_Libre »

Mise à jour :

- Vérification du bon fonctionnement avec RealVNC Connect 6.0.x
- Mise à jour mineure du code source
ghost207

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par ghost207 »

Salut
j'essaye de suivre ton tuto mais le suis bloquer vers le debut.
je ne parvient pas a trouver une version de RealVNC avec le mode user
j'ai tester plusieurs version 6.0.x et a aucun moment j'ai le répertoire advanced dans tout les programmes de REALVNC
elle se lance toute en service

a tu les sources de RealVNC?
https://www.realvnc.com/en/connect/down ... r-versions
Etre_Libre
Administrateur
Messages : 800
Inscription : 13 novembre 2012, 21:44

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par Etre_Libre »

Bonjour,

Je n'ai pas encore mis à jour mon logiciel avec RealVNC Connect 6.2.0 et n'ai donc pas testé (peu de temps libre).

J'ai juste installé rapidement cette version dans une VM : apparemment les raccourcis en question n'existent plus...

A la place, apparemment on peut fermer le service VNC, puis exécuter ce programme pour lancer VNC en mode User (Utilisateur) :
"C:\Program Files\RealVNC\VNC Server\vncserver.exe"

Est-ce que ça fonctionne pour toi ?

Enfin, non je n'ai pas les sources de RealVNC, elles n'existent pas pour les versions actuelles, depuis de longues années.
ghost207

Re: Prise en main à distance inversée, avec VNC (RealVNC)

Message par ghost207 »

Bonjour,
je pense avoir trouver mon problème, c'est que je n'ai pas la version édition Enterprise, du coup le mode User ne se lance pas.
merci
Verrouillé