Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1608 connectés 

  FORUM HardWare.fr
  Réseaux grand public / SoHo
  Réseaux

  Script (PowerShell ?) et port knocking

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script (PowerShell ?) et port knocking

n°978813
diablol
Posté le 23-06-2017 à 13:24:39  profilanswer
 

Bonjours a tous et merci d'avance de votre aide
 
Voilà, pour faire simple j'ai une application d'un poste secondaire (téléphone en l'occurence) qui communique via un port spécifique a une application sur mon Poste principal.
Le problème, c'est que l'application sur mon poste principal ne peux pas être lancé h24, c'est pourquoi j'essaye de créer un script Powershell (ou autre si vous préférez) de port knocking qui va attendre un paquet sur le port en question, et quand ce sera fait, va lancer l'application approprié et lui laisser la communication.
 
J'ai déjà (avec de l'aide) commencé un script Powershell  
 

Code :
  1. $Listener = [System.Net.Sockets.TcpListener]8080;
  2. while($true)
  3. {
  4.     $Listener.Start();
  5.     $client = $Listener.AcceptTcpClient();
  6.     Write-Host "Connecté, lancement de l'appli";
  7.     $client.Close();
  8.     $Listener.Stop();
  9.     Start-Process -FilePath "C:\Program Files (x86)\...\xxx.exe" -Wait
  10.     Start-Sleep -s 10;
  11. }

Ce script marche très bien, le problème, c'est que si l'appli PC est lancé manuellement (ce qui peut arriver), le script essayera de lancer un autre exe qui échouera, mais surtout le -wait ne sera pas pris en compte et dans ce cas, l'écoute active du port empêche toute communication entre les 2 appli. J'ai donc essayé

Code :
  1. while($true)
  2. {
  3.     while((Get-Process -Name xxx -ErrorAction SilentlyContinue) -ne $null)
  4.     {
  5.         Start-Sleep -s 10;
  6.     }
  7.     $Listener = [System.Net.Sockets.TcpListener]8080;
  8.     $Listener.Start();
  9.     $client = $Listener.AcceptTcpClient();
  10.     Write-Host "Connecté, lancement de l'appli";
  11.     $client.Close();
  12.     $Listener.Stop();
  13.     If ((Get-Process -Name xxx -ErrorAction SilentlyContinue) -eq $null)
  14.     {
  15.         Start-Process -FilePath "C:\Program Files (x86)\...\xxx.exe" -Wait
  16.         Start-Sleep -s 10;
  17.     } else {
  18.         Write-Host "appli déjà lancé"
  19.     }
  20. }


Mais visiblement, même quand le script est bloqué dans la 1ere boucle (car l'appli est déjà lancé), l'écoute reste active car la communication échoue en boucle...
le paramètre "-wait" a l'air de marcher pour mettre en pause l'écoute, mais je ne sais pas trop comment l'implémenter dans le cas ou l'appli est déjà lancé (sachant que je ne veux pas quitter l'appli si elle est déjà lancé)
 
Voilà, j'espère que vous pourrez m'aider parceque je ne suis pas très doué en scripting.
Merci d'avance de votre aide

mood
Publicité
Posté le 23-06-2017 à 13:24:39  profilanswer
 

n°979347
bardiel
Debian powa !
Posté le 28-06-2017 à 09:20:30  profilanswer
 

Pourquoi ne pas faire ton test avant l'écoute ? Je dirais à l'arrache (attention, connaissance limitée en PS) :

Code :
  1. $Listener = [System.Net.Sockets.TcpListener]8080;
  2. while($true)
  3.     {
  4.         If ((Get-Process -Name xxx -ErrorAction SilentlyContinue) -eq $null)
  5.   {
  6.   $Listener.Start();
  7.   $client = $Listener.AcceptTcpClient();
  8.   Write-Host "Connecté, lancement de l'appli";
  9.   $client.Close();
  10.   $Listener.Stop();
  11.   Start-Process -FilePath "C:\Program Files (x86)\...\xxx.exe" -Wait
  12.   Start-Sleep -s 10;
  13.  } else {
  14.   Write-Host "appli déjà lancé"
  15.  }       
  16.     }


Mais ça imposera que durant l'écoute, l'appli ne soit pas lancée manuellement sur le poste. Si ton poste est utilisé par un autre utilisateur (avec son login), sauf à lancer "en tant que" et que l'appli ne soit pas trop tatillon, ça passerait non ?
S'il peut être utilisé par un tier... bah pourquoi ne pas se connecter sur le poste directement en RDP dessus ?
L'autre (potentiel) utilisateur verra que le poste est déjà utilisé.
S'il doit être utilisé par un tier, là point de salut à part installer le logiciel sur ton PC. Si compatible [:the geddons] (Avaya One-X par exemple étant capricieux sur Windows 10 64bits)


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°979366
diablol
Posté le 28-06-2017 à 10:54:55  profilanswer
 

Alors tout d'abord merci de ton aide, je commençais a perdre espoir :)
 

bardiel a écrit :

Pourquoi ne pas faire ton test avant l'écoute ? Je dirais à l'arrache

Si j'ai bien compris ton script, admettons que le PC démarre, le script ne détecte pas l'exe lancé donc il commence a écouter le port et attend ici... si au bout de quelques heures, je lance l'exe manuellement, le script ne va le prendre en compte, et quand je lancerai l'appli secondaire plus tard, la communication sera bloqué. Je me trompe ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Réseaux grand public / SoHo
  Réseaux

  Script (PowerShell ?) et port knocking

 

Sujets relatifs
Routeur ASUS, Wifi Dead, Ouverture d'un port FTPPort forwarding & Opérateur Orange (carte SIM)
Ouvrir un port ?Script connexion imprimante selon l'ip
Impossible de mettre à jour pilote port ethernet gigabitFreebox Révolution port 80 ouvert en entrée [résolu]
Carte réseau avec 2 port RJ45 à quoi ca sertachat d un Switch 16 port
achat d un Switch 16 portOuvrir port de Box
Plus de sujets relatifs à : Script (PowerShell ?) et port knocking


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR