Script (PowerShell ?) et port knocking

Script (PowerShell ?) et port knocking - Réseaux - Réseaux grand public / SoHo

Marsh Posté le 23-06-2017 à 13:24:39    

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

Reply

Marsh Posté le 23-06-2017 à 13:24:39   

Reply

Marsh Posté le 28-06-2017 à 09:20:30    

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
Reply

Marsh Posté le 28-06-2017 à 10:54:55    

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 ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed