Question
Crypter password ou script
- Jean Ben
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 14 ans 3 mois #10741
par Jean Ben
Crypter password ou script a été créé par Jean Ben
Bonjour,
J'ai un script avec des password en clair. Je voudrais soit crypter le password dans le script ou soit crypter le script.
Mon script est un script d'ouverture de session, il sera donc exécuter par X utilisateurs sur X machines.
Quels sont les possibilités qui s'offrent à moi ?
Merci de votre aide
J'ai un script avec des password en clair. Je voudrais soit crypter le password dans le script ou soit crypter le script.
Mon script est un script d'ouverture de session, il sera donc exécuter par X utilisateurs sur X machines.
Quels sont les possibilités qui s'offrent à moi ?
Merci de votre aide
Connexion ou Créer un compte pour participer à la conversation.
- LEON
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 69
- Remerciements reçus 0
il y a 14 ans 3 mois #10744
par LEON
Réponse de LEON sur le sujet Re:Crypter password ou script
Bonjour,
je vais essayer d'expliquer une solution que j'utilise:
1- Création et stockage du password que l'on veut cacher (à executer une fois pour stocker le password)
[code:1]
#Demande le credential
#exemple: administrateur/passworddelamort
$credential = Get-Credential
#Où on stocke le password
$credPath = Join-Path (Split-Path $profile) mon_script.ps1.credential
#Qu'est ce qu'on stocke
$credential.Password | ConvertFrom-SecureString | Set-Content $credPath
[/code:1]
2 Utilisation dans un script
[code:1]
#Partie qui récupère le Crédential
#Où?
$credPath = Join-Path (Split-Path $profile) mon_script.ps1.credential
#Quoi?
$password = Get-Content $credPath | ConvertTo-SecureString
#Ici on créer un nouvel objet de type credential et l'on retrouve notre user donc ici administrateur
$credential = New-Object System.Management.Automation.PsCredential \"administrateur\",$password
#Mon script
Get-WmiObject win32_logicaldisk -ComputerName serveur422K8 -Credential $credential
[/code:1]
J'ai essayer de détailler le plus possible, n'hésite pas si tu as des questions.
PS: Voila ce qu'il y a dans mon fichier \"mon_script.ps1.credential\"
01000000d08c9ddf0115d1118c7a00c04fc297eb010000003373cc036283424e9cf7e9484a03d4d0000000000200000000001066000000010000200000008dfe2556c5c6fe4c4c0cb4ecfaca731b2fcf046aff728c503f9492d73d967f8b000000000e800000000200002000000002e80b693c1dadd5566d5cd0661c153bb7b1f1406f7fe263d77fd1ccdde5f7ac100000006d9070b31ae6427badf473c29c79a6e4400000001923a375b9f7edc1ac96424c76246892ec3c8b3f8fd0b439d6487330888cefad124dd6e86dc61b0f8d8cb962b1e783bde752f53c84c1cd75178b8630a3e90eac
Cia
je vais essayer d'expliquer une solution que j'utilise:
1- Création et stockage du password que l'on veut cacher (à executer une fois pour stocker le password)
[code:1]
#Demande le credential
#exemple: administrateur/passworddelamort
$credential = Get-Credential
#Où on stocke le password
$credPath = Join-Path (Split-Path $profile) mon_script.ps1.credential
#Qu'est ce qu'on stocke
$credential.Password | ConvertFrom-SecureString | Set-Content $credPath
[/code:1]
2 Utilisation dans un script
[code:1]
#Partie qui récupère le Crédential
#Où?
$credPath = Join-Path (Split-Path $profile) mon_script.ps1.credential
#Quoi?
$password = Get-Content $credPath | ConvertTo-SecureString
#Ici on créer un nouvel objet de type credential et l'on retrouve notre user donc ici administrateur
$credential = New-Object System.Management.Automation.PsCredential \"administrateur\",$password
#Mon script
Get-WmiObject win32_logicaldisk -ComputerName serveur422K8 -Credential $credential
[/code:1]
J'ai essayer de détailler le plus possible, n'hésite pas si tu as des questions.
PS: Voila ce qu'il y a dans mon fichier \"mon_script.ps1.credential\"
01000000d08c9ddf0115d1118c7a00c04fc297eb010000003373cc036283424e9cf7e9484a03d4d0000000000200000000001066000000010000200000008dfe2556c5c6fe4c4c0cb4ecfaca731b2fcf046aff728c503f9492d73d967f8b000000000e800000000200002000000002e80b693c1dadd5566d5cd0661c153bb7b1f1406f7fe263d77fd1ccdde5f7ac100000006d9070b31ae6427badf473c29c79a6e4400000001923a375b9f7edc1ac96424c76246892ec3c8b3f8fd0b439d6487330888cefad124dd6e86dc61b0f8d8cb962b1e783bde752f53c84c1cd75178b8630a3e90eac
Cia
Connexion ou Créer un compte pour participer à la conversation.
- Jean Ben
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 14 ans 3 mois #10776
par Jean Ben
Réponse de Jean Ben sur le sujet Re:Crypter password ou script
Connexion ou Créer un compte pour participer à la conversation.
- gaetan
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 38
- Remerciements reçus 0
il y a 12 ans 6 mois #15712
par gaetan
Réponse de gaetan sur le sujet Re:Crypter password ou script
jeanben écrit:
hello
je up ce sujet car j'ai testé la methode en piece jointe
[code:1]# Path to the script to be created:
$path = 'c:\scripts\template.ps1'
# Create empty template script:
New-Item -ItemType File $path -Force -ErrorAction SilentlyContinue
$pwd = Read-Host 'Enter Password' -AsSecureString
$key = 1..32 | ForEach-Object { Get-Random -Maximum 256 }
$pwdencrypted = $pwd | ConvertFrom-SecureString -Key $key
$private:ofs = ' '
('$password = \"{0}\"' -f $pwdencrypted) | Out-File $path
('$key = \"{0}\"' -f \"$key\"«») | Out-File $path -Append
'$passwordSecure = ConvertTo-SecureString -String $password -Key ([Byte[]]$key.Split(\" \"«»))' |
Out-File $path -Append[/code:1]
ce code permet de crypter un mot de passe , et logiquement si je remplace mon mot de passe en clair par $passwordSecure cela devrait fonctionné?
ce n'est malheuresement pas mon cas
j'ai un script actuellement avec un mdp en clair qui est necessaire pour moi generer un certificat et me connecté à une base sql
je pense que powershell n'arrive pas à retranscrire mon mot de passe
y a t'il une autre solution que cette fonction ?
Cool merci.
Sinon j'ai trouvé ça : powershell.com/cs/blogs/tobias/archive/2...pting-passwords.aspx
hello
je up ce sujet car j'ai testé la methode en piece jointe
[code:1]# Path to the script to be created:
$path = 'c:\scripts\template.ps1'
# Create empty template script:
New-Item -ItemType File $path -Force -ErrorAction SilentlyContinue
$pwd = Read-Host 'Enter Password' -AsSecureString
$key = 1..32 | ForEach-Object { Get-Random -Maximum 256 }
$pwdencrypted = $pwd | ConvertFrom-SecureString -Key $key
$private:ofs = ' '
('$password = \"{0}\"' -f $pwdencrypted) | Out-File $path
('$key = \"{0}\"' -f \"$key\"«») | Out-File $path -Append
'$passwordSecure = ConvertTo-SecureString -String $password -Key ([Byte[]]$key.Split(\" \"«»))' |
Out-File $path -Append[/code:1]
ce code permet de crypter un mot de passe , et logiquement si je remplace mon mot de passe en clair par $passwordSecure cela devrait fonctionné?
ce n'est malheuresement pas mon cas
j'ai un script actuellement avec un mdp en clair qui est necessaire pour moi generer un certificat et me connecté à une base sql
je pense que powershell n'arrive pas à retranscrire mon mot de passe
y a t'il une autre solution que cette fonction ?
Connexion ou Créer un compte pour participer à la conversation.
- gaetan
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 38
- Remerciements reçus 0
il y a 12 ans 6 mois #15713
par gaetan
Réponse de gaetan sur le sujet Re:Crypter password ou script
j'ai trouvé la solution donc j'en fait profité la communauté
en fait , de base powershell garde le mot de passe dans une zone secure , donc le mot de passe n'est pas lisible en clair pour des sources externe , ex : base sql ou certificat dans mon cas
le script ci dessus permet d'eviter d'avoir le mot de passe en clair dans le script , biensur il est lisible dans la variable mais cela filtre déja pas mal de personne mal intentionné
[code:1]##################################################################
# script permettant de camoufler un mot de passe et de generer #
# le code à utiliser #
##################################################################
# chemin du fichier avec le code généré
$path = 'c:\temp\codeàinsererpourcamouflermdp.ps1'
# cryptage du mdp
New-Item -ItemType File $path -Force -ErrorAction SilentlyContinue
$pwdinitial = Read-Host 'Entrer le mot de passe à camoufler' -AsSecureString
$keysecure = 1..32 | ForEach-Object { Get-Random -Maximum 256 }
$pwdencrypted = $pwdinitial | ConvertFrom-SecureString -Key $keysecure
# Creation de la structure du script de sortie
$private:ofs = ' '
'#Script à copier pour recuperer le mot de passe camouflé' | Out-File $path
('$pwd = \"{0}\"' -f $pwdencrypted) | Out-File $path -Append
('$keysecure = \"{0}\"' -f \"$keysecure\"«») | Out-File $path -Append
'$pwdSecure = ConvertTo-SecureString -String $pwd -Key ([Byte[]]$keysecure.Split(\" \"«»))' | Out-File $path -Append
'$BSTR = [System.Runtime.InteropServices.marshal]::«»SecureStringToBSTR($pwdSecure)' | Out-File $path -Append
'$pwdfinal = [System.Runtime.InteropServices.marshal]::«»PtrToStringAuto($BSTR)' | Out-File $path -Append
'# le mot de passe est stocké dans la variable $pwdfinal' | Out-File $path -Append
ise $path
[/code:1]
en fait , de base powershell garde le mot de passe dans une zone secure , donc le mot de passe n'est pas lisible en clair pour des sources externe , ex : base sql ou certificat dans mon cas
le script ci dessus permet d'eviter d'avoir le mot de passe en clair dans le script , biensur il est lisible dans la variable mais cela filtre déja pas mal de personne mal intentionné
[code:1]##################################################################
# script permettant de camoufler un mot de passe et de generer #
# le code à utiliser #
##################################################################
# chemin du fichier avec le code généré
$path = 'c:\temp\codeàinsererpourcamouflermdp.ps1'
# cryptage du mdp
New-Item -ItemType File $path -Force -ErrorAction SilentlyContinue
$pwdinitial = Read-Host 'Entrer le mot de passe à camoufler' -AsSecureString
$keysecure = 1..32 | ForEach-Object { Get-Random -Maximum 256 }
$pwdencrypted = $pwdinitial | ConvertFrom-SecureString -Key $keysecure
# Creation de la structure du script de sortie
$private:ofs = ' '
'#Script à copier pour recuperer le mot de passe camouflé' | Out-File $path
('$pwd = \"{0}\"' -f $pwdencrypted) | Out-File $path -Append
('$keysecure = \"{0}\"' -f \"$keysecure\"«») | Out-File $path -Append
'$pwdSecure = ConvertTo-SecureString -String $pwd -Key ([Byte[]]$keysecure.Split(\" \"«»))' | Out-File $path -Append
'$BSTR = [System.Runtime.InteropServices.marshal]::«»SecureStringToBSTR($pwdSecure)' | Out-File $path -Append
'$pwdfinal = [System.Runtime.InteropServices.marshal]::«»PtrToStringAuto($BSTR)' | Out-File $path -Append
'# le mot de passe est stocké dans la variable $pwdfinal' | Out-File $path -Append
ise $path
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 12 ans 6 mois #15714
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Crypter password ou script
Bonjour,
C'est vrai que ton script permet bien de crypter un mot de passe et de faire en sorte que celui-ci ne soit pas inscrit en dur dans le code....
Cependant, tu fournis tout le 'kit' à celui qui veut récupérer ce mot de passe : le mot de passe crypté, la clef et même la méthode de décryptage.
Toute personne ayant accès à ton script pourra donc connaître le mot de passe.
Un tel script déposé sur un Netlogon n'est pas du tout sécurisé, puisque le partage Netlogon est accessible à tous les utilisateurs du domaine, administrateur ou pas.
Bref, je voulait simplement le signaler
Une solution consiste à utiliser le planificateur de tâches pour exécuter le script dans un contexte particulier. C'est le système qui stockera le mot de passe (NB : Il vaut mieux le faire sur un serveur 2008 R2, le planificateur de tâche et notamment la méthode de stockage des mots de passe a été revue).
Une autre solution consiste à générer un exécutable depuis le script (PowerGUI pro le fait, pour l'exemple et PrimalScript ou PrimalCode aussi je crois) mais je ne suis pas certain que le script n'est pas récupérable par retro engineering (je crois même qu'il est tout simplement temporairement décompressé et/ou déposé dans un répertoire, le temps de son exécution : bref, le mécanisme très facile à observer avec un Process Monitor - ex-FileMon).
Dans tous les cas (ta solution ou une autre) que le mot de passe soit crypté, ou pas, ce sont les autorisations et les accès donnés aux utilisateurs qui permettront de renforcer la sécurité (droits NTFS, accès aux partages et aux serveurs, ....).
Après il faut que les systèmes du SI soient à jour, l'antivirus à jour et le pare-feu en place. En fait, il faut un tout : ce n'est pas pour reprendre ce que tu as posté ici, mais je pense qu'il est intéressant de le dire et/ou de le rappeler.
@ +
Matthew BETTON
C'est vrai que ton script permet bien de crypter un mot de passe et de faire en sorte que celui-ci ne soit pas inscrit en dur dans le code....
Cependant, tu fournis tout le 'kit' à celui qui veut récupérer ce mot de passe : le mot de passe crypté, la clef et même la méthode de décryptage.
Toute personne ayant accès à ton script pourra donc connaître le mot de passe.
Un tel script déposé sur un Netlogon n'est pas du tout sécurisé, puisque le partage Netlogon est accessible à tous les utilisateurs du domaine, administrateur ou pas.
Bref, je voulait simplement le signaler
Une solution consiste à utiliser le planificateur de tâches pour exécuter le script dans un contexte particulier. C'est le système qui stockera le mot de passe (NB : Il vaut mieux le faire sur un serveur 2008 R2, le planificateur de tâche et notamment la méthode de stockage des mots de passe a été revue).
Une autre solution consiste à générer un exécutable depuis le script (PowerGUI pro le fait, pour l'exemple et PrimalScript ou PrimalCode aussi je crois) mais je ne suis pas certain que le script n'est pas récupérable par retro engineering (je crois même qu'il est tout simplement temporairement décompressé et/ou déposé dans un répertoire, le temps de son exécution : bref, le mécanisme très facile à observer avec un Process Monitor - ex-FileMon).
Dans tous les cas (ta solution ou une autre) que le mot de passe soit crypté, ou pas, ce sont les autorisations et les accès donnés aux utilisateurs qui permettront de renforcer la sécurité (droits NTFS, accès aux partages et aux serveurs, ....).
Après il faut que les systèmes du SI soient à jour, l'antivirus à jour et le pare-feu en place. En fait, il faut un tout : ce n'est pas pour reprendre ce que tu as posté ici, mais je pense qu'il est intéressant de le dire et/ou de le rappeler.
@ +
Matthew BETTON
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.099 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Crypter password ou script