venerdì 10 marzo 2017

PowerShell: Recuperare la password da un oggetto PSCredential

Diversi cmdlet PowerShell permettono l'utilizzo di un oggetto PSCredential per essere eseguiti con un particolare account. Proprio per questo l'oggetto PSCredential viene spesso utilizzato per memorizzare le credenziali in modo da  poterle richiamare in diverse parti di uno script.
Per creare un'istanza di un oggetto PSCredential può essere utilizzato il cmdlet Get-Credential
Ad es. eseguendo da PowerShell il comando
$credenziali=Get-Credential
verrà aperta una finestra di richiesta credenziali (FIG 1). Inserendo utenza e password queste verranno memorizzate all'interno dell'oggetto PSCredential $credenziali
Richiesta credenziali di Windows PowerShell
FIG 1 - Richiesta credenziali di Windows PowerShell

Per visualizzare i membri (metodi e proprietà) dell'oggetto viene utilizzato il cmdlet Get-Member 
$credenziali | Get-Member
Visualizzare i membri di un oggetto PSCredential
FIG 2 - Visualizzare i membri di un oggetto PSCredential

Analizzando le proprietà di un oggetto PSCredential (FIG 2), salta subito all'occhio che l'utenza viene memorizzata in chiaro all'interno di una comune stringa mentre la password viene memorizzata come securestring e pertanto non visibile (almeno non direttamente).

Per visualizzare il nome utente memorizzato all'interno dell'oggetto PSCredential basta utilizzare il comando
$credenziali.UserName

Eseguendo il comando
$credenziali.Password | Get-Member
verranno mostrati i metodi e le proprietà disponibili per la password (FIG 3). Tale informazioni sono d'aiuto per conoscere quali operazioni è possibile effettuare sulla password.
Ad es. per conoscere la lunghezza della password bisogna interrogare la proprietà Length
$credenziali.Password.Length
mentre per cancellarla va utilizzato il metodo Clear()
$credenziali.Password.Clear()
Recuperare informazioni sulla password da un oggetto PSCredential
FIG 3 - Recuperare informazioni sulla password da un oggetto PSCredential

Per "scoprire" la password memorizzata all'interno dell'oggetto PSCredential è possibile lanciare il seguente comando
$credenziali.GetNetworkCredential().Password
Visualizzare la password memorizzata all'interno di un oggetto PSCredential
FIG 4 - Visualizzare la password memorizzata all'interno di un oggetto PSCredential
Dalla FIG 4 si evince che la password memorizzata è "123456" (tra le password più sicure e diffuse al mondo), non resta che scrivere le credenziali su un post-it da attaccare al monitor (ndr Per chi non se ne fosse resto conto, ero sarcastico!!!).

Nessun commento:

Posta un commento

I messaggi sono soggetti a moderazione da parte dell'amministratore prima della loro pubblicazione.