Question Schtasks et read-host (Résolu)

Plus d'informations
il y a 16 ans 8 mois #706 par dacharry
Bonjour,

Je vous expose mon problème. Je fais mumuse avec powershell depuis peu et je me fais les dents sur schtasks en ce moment.
J'ai réussi a surmonter toutes les difficultées syntaxiques de la commande (grâce a l'aide des admins du forum en grande partie) mais maintenant je suis confronté a un problème de securestring.

Je veux que l'utilisateur saisisse une fois son password a l'execution du script (au liezu de le saisir a chaque execution de schtasks /create.
Donc j'utilise read-host.
Seulement en faisant ça le password apprarait a l'ecran en toute lettres. Mon boss a moyennement apprécié en voyant ca.
Du coup je fais un read-host -as mais le problème c'est que je ne sais ni récupérer la chaine de caractère originelle ni demander a schtask d'utiliser un secutring comme password.
Si quelqu'un peut m'aider.

Merci d'avance

ps: Voilà le code:

Param ($time = [DateTime]::Now.addMinutes(1).ToLongTimeString(),$day = [DateTime]::Now.ToShortDateString(),[string]$pass = \"\")

$user = [environment]::username
if ($pass -eq \"\"){
$pass = Read-host \"entrez votre mot de passe\" -as
}
$temp = ma commande
schtasks /create /RU $user /RP $pass /sc ONCE /st $time /sd $day /tn $name /TR \&quot;powershell -command $temp\&quot;<br><br>Message édité par: Arnaud, à: 23/07/07 10:36

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 8 mois #707 par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:schtasks et read-host
Ce que tu peux faire *à chaque fois* juste avant d'appeler schtasks, c'est décrypter la SecureString:

[code:1]# décryptage du mot de passe:
$ptr = [System.Runtime.InteropServices.Marshal]:: SecureStringToCoTaskMemUnicode($pass)
$clrpass = [System.Runtime.InteropServices.Marshal]:: PtrToStringUni($ptr)

# planification avec le mot de passe en clair:
$temp = ma commande
schtasks /create /RU $user /RP $clrpass /sc ONCE /st $time /sd $day /tn $name /TR \&quot;powershell -command $temp\&quot;

# nettoyage des variables pour éviter tout problème:
[System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($ptr)
$clrpass = \&quot;*\&quot;*40
[System.GC]::Collect()[/code:1]
NB: supprimer les espaces qui suivent les \&quot;::\&quot; dans les premières lignes, ajoutés simplement pour éviter l'affichage de smileys...

A tester, mais à priori ça devrait marcher.

Le nettoyage qui suit le schtasks sert à s'assurer que les variables utilisées pour le décryptage de la SecureString sont vidées et qu'aucune trace n'est gardée en mémoire. Je sais, ça peut paraître un peu extrême, mais de nombreux outils de piratage reposent sur une lecture des zônes mémoire, et c'est fou ce qu'on y trouve d'intéressant...

Janel

(édité pour modifier le nettoyage de $clrpass)

Message édité par: janel, à: 20/07/07 20:19<br><br>Message édité par: Arnaud, à: 17/11/07 22:53

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 8 mois #722 par dacharry
Réponse de dacharry sur le sujet Re:schtasks et read-host
Merci de ton aide.
A ma grande surprise le code ne fonctionnait pas dans le cadre de de mon script mais dans un fichier test ou il était seul tout se passait bien.
Le problème venait en fait des paramêtres. La variable pass était un paramêtre ce qui avait pour effet de faire cracher la fonction SecureStringToCoTaskMemUnicode. J'ai donc renomé le paramêtre en $password et fait un $pass =$password au début et voilaaaaaaa, capuchinoooooo.

Encore merci de ton aide precieuse Janel.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.066 secondes
Propulsé par Kunena