Question
Schtasks et read-host (Résolu)
- dacharry
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 16 ans 8 mois #706
par dacharry
Schtasks et read-host (Résolu) a été créé 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 \"powershell -command $temp\"<br><br>Message édité par: Arnaud, à: 23/07/07 10:36
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 \"powershell -command $temp\"<br><br>Message édité par: Arnaud, à: 23/07/07 10:36
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
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 \"powershell -command $temp\"
# nettoyage des variables pour éviter tout problème:
[System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($ptr)
$clrpass = \"*\"*40
[System.GC]::Collect()[/code:1]
NB: supprimer les espaces qui suivent les \"::\" 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
[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 \"powershell -command $temp\"
# nettoyage des variables pour éviter tout problème:
[System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($ptr)
$clrpass = \"*\"*40
[System.GC]::Collect()[/code:1]
NB: supprimer les espaces qui suivent les \"::\" 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.
- dacharry
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
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.
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.065 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Schtasks et read-host (Résolu)