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

  FORUM HardWare.fr
  Programmation
  Divers

  [AutoIT]psexec sur registre distant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[AutoIT]psexec sur registre distant

n°2253868
bardiel
Debian powa !
Posté le 22-03-2015 à 01:24:01  profilanswer
 

Bonsoir/bonjour !
 
Dans le cadre du boulot, et vu que parfois le logiciel de PMAD perd un peu les pédales, je voulais m'orienter vers l'activation distante du bureau distant afin de prendre la main sur des machines dont je dois m'occuper.
Au début je m'orientais vers un code assez "simple" et fonctionnel dans le cadre personnel, mais dès qu'il s'agit de partir sur un domaine ça ne fonctionne plus : l'utilisation du service de registre distant.
 
Donc là "plan B" [:paco fpg:1] : l'utilisation de psexec pour exécuter du reg query (lecture) et reg delete/reg add (suppression et ré-écriture d'une nouvelle valeur)
Le tout se passant sur les clés :
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections = 1 -> désactivé / 0 -> activé
Et
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber = 3389 -> port de connexion
 
Donc 1er jet du code, pour l'instant je m'attarde sur la partie lecture de la valeur fDenyTSConnections pour savoir si c'est actif ou pas :

Code :
  1. #RequireAdmin
  2. #Region
  3. #AutoIt3Wrapper_Icon=remote.ico
  4. #AutoIt3Wrapper_UseX64=n
  5. #EndRegion
  6. Opt("guioneventmode", 1)
  7. #include <GUIConstantsEx.au3>
  8. #include <MsgBoxConstants.au3>
  9. #include <WindowsConstants.au3>
  10. #include <EditConstants.au3>
  11. #include <Array.au3>
  12. #include <File.au3>
  13. Local $hGUI = GUICreate("[Activation RDP Distante]", 600, 300)
  14. $Pic1 = GUICtrlCreatePic("mon_fond", 285, 0,0,0)
  15. GUISetBkColor (0xffffff)
  16. GUICtrlSetColor(-1, 0xff6347)
  17. GUICtrlSetBkColor(-1, 0xf0f8ff)
  18. GUICtrlCreateLabel("Activation RDP Distante - méthode PSExec", 5, 5, 590, 25)
  19. GUICtrlSetFont(-1,18,400,"Verdana" )
  20. GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  21. ; information du PC cible
  22. GUICtrlCreateLabel("Cible :", 10, 43, 70, 25)
  23. $strComputer1 = GUICtrlCreateInput("127.0.0.1", 90, 40, 100, 20)
  24. GUICtrlCreateLabel("Utilisateur :", 10, 73, 70, 25)
  25. $strUser = GUICtrlCreateInput("administrateur", 90, 70, 100, 20)
  26. GUICtrlCreateLabel("Mot de passe :", 10, 103, 70, 25)
  27. $strPassword = GUICtrlCreateInput("", 90, 100, 100, 20,$ES_PASSWORD)
  28. GUICtrlCreateLabel("Port :", 10, 133, 70, 25)
  29. $strPort = GUICtrlCreateInput("3389", 90, 130, 100, 20)
  30. ; commandes
  31. GUICtrlCreateButton("Status", 200, 38, 90)
  32. GUICtrlSetOnEvent(-1, "_status" )
  33. GUICtrlCreateButton("Activer", 200, 68, 90)
  34. GUICtrlSetOnEvent(-1, "active" )
  35. GUICtrlCreateButton("Désactiver", 200, 98, 90)
  36. GUICtrlSetOnEvent(-1, "desactiv" )
  37. GUICtrlCreateButton("Redémarrer", 200, 128, 90)
  38. GUICtrlSetOnEvent(-1, "_reboot" )
  39. ; affichage informations
  40. $Info1 = GUICtrlCreateLabel("   ", 10, 160, 285, 25)
  41. GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  42. $Info2 = GUICtrlCreateLabel("   ", 10, 175, 285, 25)
  43. GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  44. GUICtrlCreateButton("Quitter", 500, 265, 90)
  45. GUICtrlSetOnEvent(-1, "_Exit" )
  46. GUISetState()
  47. GUICtrlSetState($Pic1, $GUI_DISABLE)
  48. GUISetOnEvent(-3, "_Exit" )
  49. While 1
  50.     Sleep(100)
  51. WEnd
  52. Func _status()
  53. $computer = GUICtrlRead($strComputer1)
  54. If $computer = "" Then
  55. $computer = @ComputerName
  56. GUICtrlSetData($strComputer1, "127.0.0.1" )
  57. EndIf
  58. $user = GUICtrlRead($strUser)
  59. $password = GUICtrlRead($strPassword)
  60. $iPID = Run(@ComSpec & ' /c ' & 'net use \\' & $computer & '\ipc$ /user:' & $user & ' ' & $password & ' & psexec \\' & $computer & ' -u ' & $user & '-p ' & $password & ' -i reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections'&chr(39)&' & pause', '', @SW_SHOW)
  61. ProcessWaitClose($iPID)
  62. $read = StdoutRead($iPID)
  63. Sleep(500)
  64. GUICtrlSetData($Info1, $read )
  65. ; reste à faire code pour extraire et afficher le bon résultat...
  66. ;If $read = "1" Then
  67. ; GUICtrlSetData($Info1, "Bureau à Distance : Désactivé" )
  68. ;ElseIf $read = "0" Then
  69. ; GUICtrlSetData($Info1, "Bureau à Distance : Activé" )
  70. ;ElseIf @error = 2 Then
  71. ; GUICtrlSetData($Info1, "Erreur : la clé n'a pas pu etre trouvé sur le " & $computer)
  72. ;ElseIf @error = 3 Then
  73. ; GUICtrlSetData($Info1, "Erreur : le PC " & $computer & " est inexistant ou indisponible." )
  74. ;Else
  75. ; GUICtrlSetData($Info1, "Erreur : erreur inconnue" )
  76. ;EndIf
  77. EndFunc
  78. Func desactiv()
  79. EndFunc
  80. Func active()
  81. EndFunc
  82. Func _reboot()
  83. $user = GUICtrlRead($strUser)
  84. $password = GUICtrlRead($strPassword)
  85. ; Run(@ComSpec & " /c " & "psexec \\" & $computer & " -u " & $user & "-p " & $password & " shutdown -f -r -t 0", "", @SW_HIDE)
  86. GUICtrlSetData($Info1, "Redémarrage distant initialisé." )
  87. GUICtrlSetData($Info2, "" )
  88. EndFunc
  89. Func _Exit()
  90.     Exit
  91. EndFunc   ;==>_Exit


La partie du code qui me pose problème c'est :

Code :
  1. $iPID = Run(@ComSpec & ' /c ' & 'net use \\' & $computer & '\ipc$ /user:' & $user & ' ' & $password & ' & psexec \\' & $computer & ' -u ' & $user & '-p ' & $password & ' -i reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections'&chr(39)&' & pause', '', @SW_SHOW)
  2. ProcessWaitClose($iPID)
  3. $read = StdoutRead($iPID)


En effet... rien. A l'affichage de la fenêtre ça me redemande le password du compte, or je le fournis déjà. Et après bim "impossible d'exécuter la commande".
 
Des idées ?


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
mood
Publicité
Posté le 22-03-2015 à 01:24:01  profilanswer
 

n°2253880
gilou
Modérateur
Modzilla
Posté le 22-03-2015 à 11:27:09  profilanswer
 

Un peu partout sur le net, ça parle aussi de faire des choses au niveau du firewall après avoir changé la valeur dans le registre: http://ares.gobien.be:8080/2012/01 [...] th-psexec/ ou plus verbeux: http://blog.omotech.com/?p=1019
Ça vient peut être de la.
A+,


Message édité par gilou le 22-03-2015 à 11:28:20

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2253885
bardiel
Debian powa !
Posté le 22-03-2015 à 13:11:04  profilanswer
 

Vu déjà côté pare-feu d'où justement mon "net use \\computer\ipc$ /user:mon_admin  mot_de_passe" scripté qui permet de by-pass ce problème.
 
Déjà ça avance à cause d'un espace oublié là : '-p ' pour du ' -p '
Et maintenant j'ai du Error code 1 (= la clé n'existe pas) dans ma fenêtre CMD qui pop avec les valeurs, alors que la clé existe [:mac_lane]  
 
'tin si je ne devais pas bosser sur de l'XP, je foutrais tout ça en powershell :o


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°2254384
bardiel
Debian powa !
Posté le 27-03-2015 à 20:44:22  profilanswer
 

[:the panda] pour savoir si quelqu'un à une idée...
J'avais pensé à un "plan C" (non pas comme [:emilie_jolie] ) : une activation distante du service de registre distant par psexec/psservice/sc, puis après utilisé des commandes classiques, mais bon pour les "futurs utilisateurs" ça risque d'être dans 90% des cas l'oubli de désactiver le registre distant une fois l'opération faite.
Quand à une automatisation avant fermeture ou après exécution de la commande (on ou off), ça risque d'alourdir beaucoup la transmission et donc le PC ciblé [:jey04]


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°2254388
gilou
Modérateur
Modzilla
Posté le 27-03-2015 à 21:46:40  profilanswer
 

J'ai regardé comment ça pourrait se faire en perl, au cas ou ça t’intéresserait (et a la limite, on doit pouvoir lancer son exécution par perl depuis autoit si necessaire), et j'ai trouvé ceci: http://www.perlmonks.org/?node_id=298374  cf en particulier le dernier post.
A+,

n°2254408
bardiel
Debian powa !
Posté le 28-03-2015 à 13:06:05  profilanswer
 

Utilisation du service de registre distant, chose que je voudrais éviter le plus possible [:spamatounet]


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [AutoIT]psexec sur registre distant

 

Sujets relatifs
EJB 3 JNDI lookup @EJB Local Distantchanger la valeurs d'une cle dans la Base de registre
probleme base de registre[SQL] Répliquer/Synchroniser BDD sur serveur distant
[ASM] Afficher contenu Registrerecuperer la valeur castée d'une cle de registre
Modifier le registre Windows graphiquementMS DOS (FTP) - Connexion fermée par l'hôte distant
VBS Renommer une ruche du registreouvrir une MsgBox en VBS sur un ordinateur distant
Plus de sujets relatifs à : [AutoIT]psexec sur registre distant


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