欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PowerShell中实现混淆密码示例

程序员文章站 2022-06-24 10:58:08
适用于powershell 3.0或者更高版本, 尽管我们并不推荐将密码硬编码在脚本文件中,但是仍旧有一些场景非如此不可。与将密码以一种纯文本的方式硬编码相比,我们还可以...

适用于powershell 3.0或者更高版本,
尽管我们并不推荐将密码硬编码在脚本文件中,但是仍旧有一些场景非如此不可。与将密码以一种纯文本的方式硬编码相比,我们还可以稍微花点心思,把密码混淆一下。虽然混淆密码是一种非常低级的保护方式,但是对于不懂powershell的人来讲,还是比较神秘的。

接下来的脚本会向用户询问用户名和密码,然后删除通过混淆脚本进行处理,产生用户凭据对象。

当你运行了下面的脚本以后,用户凭据已经被保存在$cred。接下来你几乎可以在任何带有–credential参数的命令中使用它了。

复制代码 代码如下:

$cred = get-credential -message 'enter domain\username and password'
$pwd = $cred.password
$user = $cred.username
$key = 1..32 | foreach-object { get-random -maximum 256 }
$pwdencrypted = $pwd | convertfrom-securestring -key $key
 
$private:ofs = ' '
 
$generatedscript = @()
$generatedscript += '$password = ''{0}''' -f $pwdencrypted
$generatedscript += '$key = ''{0}''' -f "$key "
 
$generatedscript += '$passwordsecure = convertto-securestring -string $password -key ([byte[]]$key.split('' ''))'
$generatedscript += '$cred = new-object system.management.automation.pscredential(''{0}'', $passwordsecure)' -f $user
$generatedscript += '$cred'
 
$file = $psise.currentpowershelltab.files.add()
$file.editor.text = $generatedscript | out-string
$file.editor.setcaretposition(1,1)

产生的密码可能像这样:

复制代码 代码如下:

$password = '76492d1116743f0423413b16050a5345mgb8ahmauqa3afaavwb0agkauqbuac8adwbqadyauabvafyauwb4aeyaygb4afeapqa9ahwazga0adgaoqa4agyanwa0ageamaa0aduanwa5adkamwa5adkamwa1aduanqa0agyanwa5agqanwbkagyaoqbmageayqa3admaygbkadiaoqa3agmayqbmaduamga3adeanwa3ageaygbmadaayga1agyaywayadyaygazadkaoaa='
$key = '187 98 34 82 148 52 13 86 246 2 130 197 217 97 147 98 75 197 149 246 74 35 27 7 211 15 131 93 182 231 171 3'
$passwordsecure = convertto-securestring -string $password -key ([byte[]]$key.split(' '))
$cred = new-object system.management.automation.pscredential('mickey\mouse', $passwordsecure)
$cred