Question Crypter password ou script

Plus d'informations
il y a 14 ans 3 mois #10741 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

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

Plus d'informations
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

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

Plus d'informations
il y a 14 ans 3 mois #10776 par Jean Ben

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

Plus d'informations
il y a 12 ans 6 mois #15712 par gaetan
Réponse de gaetan sur le sujet Re:Crypter password ou script
jeanben écrit:

Cool merci. :laugh:
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.

Plus d'informations
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]

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

Plus d'informations
il y a 12 ans 6 mois #15714 par Matthew BETTON
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

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

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