Como Converter uma String Segura em Texto Simples no PowerShell
-
Use a Classe
Marshal
para Converter uma Secure String em Texto Simples no PowerShell -
Use o Cmdlet
ConvertFrom-SecureString
para Converter uma Secure String em Texto Simples no PowerShell -
Use a Classe
NetworkCredential
para Converter uma Secure String em Texto Simples no PowerShell -
Use o Método
GetNetworkCredential
para Converter uma Secure String em Texto Simples no PowerShell - Conclusão

O PowerShell oferece vários métodos para lidar com objetos SecureString
, que são projetados para proteger informações sensíveis na memória. No entanto, existem cenários em que se torna necessário converter SecureString
para texto simples, apesar dos riscos de segurança.
Neste artigo, exploramos diferentes métodos para realizar essa conversão, incluindo o uso da classe Marshal
, o cmdlet ConvertFrom-SecureString
, a classe NetworkCredential
e o método GetNetworkCredential()
. Cada método oferece suas vantagens e considerações, proporcionando flexibilidade para lidar com dados sensíveis de forma segura em scripts do PowerShell.
Use a Classe Marshal
para Converter uma Secure String em Texto Simples no PowerShell
No PowerShell, a classe [System.Runtime.InteropServices.Marshal]
fornece métodos para facilitar a interoperabilidade com código não gerenciado e manipular a memória. Dois de seus métodos, SecureStringToBSTR
e PtrToStringAuto()
, desempenham um papel crucial na conversão de SecureString
para texto simples.
Exemplo:
$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$secureStringPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($secureStringPtr)
$plainText
Neste exemplo, primeiro criamos um objeto SecureString
chamado $secureString
contendo a senha "MyPassword"
utilizando o cmdlet ConvertTo-SecureString
. Em seguida, usamos [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)
para converter o SecureString
em uma representação BSTR (Basic String).
Finalmente, [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($secureStringPtr)
é usado para converter a representação BSTR em texto simples e armazená-la na variável $plainText
.
Saída:
Use o Cmdlet ConvertFrom-SecureString
para Converter uma Secure String em Texto Simples no PowerShell
O cmdlet ConvertFrom-SecureString
converte a string segura em uma string padrão criptografada. A partir do PowerShell 7.0, um novo parâmetro -AsPlainText
foi adicionado, que converte uma string segura em uma string de texto simples.
O exemplo a seguir requer a versão 7.0 ou posterior do PowerShell.
Exemplo:
$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$plainText = ConvertFrom-SecureString -SecureString $secureString -AsPlainText
$plainText
Neste exemplo, começamos criando um objeto SecureString
chamado $secureString
contendo a senha "MyPassword"
usando o cmdlet ConvertTo-SecureString
. Em seguida, utilizamos o cmdlet ConvertFrom-SecureString
para converter $secureString
em sua representação de texto simples, armazenando o resultado na variável $plainText
.
Saída:
Use a Classe NetworkCredential
para Converter uma Secure String em Texto Simples no PowerShell
No PowerShell, a classe [System.Net.NetworkCredential]
é parte do namespace System.Net
do .NET
Framework. É utilizada principalmente para fornecer credenciais para operações de rede, como acessar serviços web, servidores FTP ou compartilhamentos de rede.
Embora seu principal propósito seja a autenticação, também pode ser utilizada para converter um SecureString
em plaintext
em cenários onde credenciais plaintext
são necessárias.
Exemplo:
$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$networkCredential = New-Object System.Net.NetworkCredential("", $secureString)
$plainText = $networkCredential.Password
$plainText
Neste exemplo, criamos um objeto SecureString
chamado $secureString
contendo a senha "MyPassword"
usando o cmdlet ConvertTo-SecureString
. Em seguida, instanciamos um objeto System.Net.NetworkCredential
, $networkCredential
, fornecendo um nome de usuário vazio (já que não é necessário para nosso propósito) e o SecureString
contendo a senha como parâmetros.
Finalmente, recuperamos a senha plaintext
de $networkCredential.Password
e a armazenamos em $plainText
.
Saída:
Use o Método GetNetworkCredential
para Converter uma Secure String em Texto Simples no PowerShell
No PowerShell, o método GetNetworkCredential()
faz parte da classe PSCredential
, que é usada para representar um conjunto de credenciais de usuário. Este método é utilizado principalmente para extrair a representação plaintext
da senha armazenada em um objeto PSCredential
.
Exemplo:
$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("username", $secureString)
$plainText = $credential.GetNetworkCredential().Password
$plainText
Neste exemplo, começamos criando um objeto SecureString
chamado $secureString
contendo a senha "MyPassword"
usando o cmdlet ConvertTo-SecureString
. Em seguida, criamos um objeto PSCredential
chamado $credential
com um nome de usuário fictício e o $secureString
como a senha.
Finalmente, usamos o método $credential.GetNetworkCredential().Password
para extrair a senha plaintext
do objeto PSCredential
.
Saída:
Conclusão
Na scriptografia do PowerShell, converter SecureString
em texto simples é um requisito comum em vários cenários. Ao aproveitar métodos como a classe [System.Runtime.InteropServices.Marshal]
, o cmdlet ConvertFrom-SecureString
, a classe [System.Net.NetworkCredential]
ou o método GetNetworkCredential()
, os usuários podem lidar com informações sensíveis de forma segura, ao mesmo tempo em que acomodam requisitos operacionais.
Seja na interação com sistemas externos, APIs legadas ou operações de rede, esses métodos oferecem flexibilidade e conveniência. No entanto, é crucial lidar com dados sensíveis com cuidado e considerar as implicações de segurança envolvidas.