none
Crypter un mot de passe RRS feed

  • Question

  • Bonjour à tous,

    Dans l'entreprise ou je suis actuellement, nous souhaitons mettre un script (powershell) en place afin que celui - ci puisse lister les différents fichiers ouvert par les utilisateurs. Ceci a pour but de savoir qui à ouvert quoi car beaucoup de fichier sont partagés et parfois laissé ouvert par un utilisateur au détriment d'autres utilisateurs.

    Voici le script que nous utilisons actuellement :
    openfiles /query /s monServeur /u monCompte /p monMotDePasse /fo CSV > C:\temp\fichiers_ouverts.csv



    Le problème de ce script c'est que le mot de passe est en clair dans le fichier et même si seul le service informatique peut y avoir accès ça peine de voir les mots de passe en clair. Donc pour cela petite évolution du script :

    $user = Read-host "Veuillez entrer l'utilisateur de la session"
    $password = Read-Host "Saisissez le mot de passe"
    
    openfiles /query /s monServeur /u $user /p $password /fo CSV >> C:\temp\fichiers_ouverts.csv



    Donc ici le mot de passe est demandé à l'utilisateur et donc apparaît en clair lorsqu'on le tape. Pour cela on souhaite que quand on tape le mot de passe les caractères soient remplacés par des points ou des étoiles. Donc on a ajouté l'option "-AsSecureString".

    Le problème avec cette option est que le script ne récupère plus le bon mot de passe.
    Nous avons vu que le mot de passe était de type SecureString et à partir de là, nous n'arrivons pas a faire appel à ce mot de passe, même en utilisant l'option ConvertTo ou ConvertFrom.

    Quelqu'un aurait il une information par rapport à la synthaxe à suivre pour que le mot de passe crypté puisse être accepté lors de la requête effectuée dans le script ?

    Cordialement

    dds69

    • Modifié dds69 mercredi 16 novembre 2016 07:46
    mercredi 16 novembre 2016 07:44

Toutes les réponses

  • Bonsoir,

    Pour récupérer le mot de passe crypté, en clair, voici un exemple :

    PS C:\> $SecureString = Read-Host -AsSecureString 'Entrer le mot de passe'
    Entrer le mot de passe: *********
    PS C:\> $SecureString
    System.Security.SecureString
    PS C:\> ConvertFrom-SecureString $SecureString
    01000000db8c9ddf0115d1118c7a00c04fc297eb01000000d4478e8a047a754d9cd017c4de5a0dc0000000000200000000001066000000010000200
    000009f238a1b84e20c6aa93a6ec17ac1c95cbf8b234736543d56f50fc6c02489c77c000000000e8000000002000020000000cd43b30ee5f08e540d
    5ec52000296d395a4989b7da6a31e4b0033ea19324d31320000000be0fccca5dc003b1991418b5f72bde3baaadf110ecedd807eb5a133c8894bbee4
    0000000d7e003be710ba69f56f32f30a88d55730354c7ef23f37d683de6bb2ed8a01836bf6cb63e3b09c62aa3ec23fe96aec7a34c8e9af5116e0f9a
    38783cae0856b2a4
    PS C:\> $clair = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString))
    PS C:\> $clair
    PazzW0rd!

    Cordialement,

    Claude


    jeudi 17 novembre 2016 22:06
  • Bonjour claude,

    Merci beaucoup pour ta réponse qui m'a aidé énormement, c'est exactement ce que je recherché \o/

    a+

    dds69

    vendredi 18 novembre 2016 11:01
  • Bonsoir,

    Ravi que cela ai pu t'aider.

    Merci de proposer comme réponse si cela a répondu à tes attentes !

    Cordialement,

    Claude

    lundi 21 novembre 2016 23:06