忘记ssms密码,想着提取一下,应为很多程序调用,一个一个改太麻烦。就使用了网上的脚本解密:
然而没什么用:
看结果:
PS C:\Users\Administrator\Desktop> .\n.ps1 -file .\vi.regsrvr
Encrypted Connection String:
data source=XXX.XXX.XXX.XXX;user id=sa;password="AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAobq4ip1xQEu/DJfk5mm5MQQAAAACAAAAAAAQZgAAAAEAACAAAAC//+oQwW6uIhLVmtoGpZ4Pz3oCE89ABya1A50GejUvTgAAAAAOgAAAAAIAACAAAADoKYAGIcXpLnO0Ng3t5Oh1Jhr5QBD8ZULbphnnTUFdDRAAAABACwVc+8wGG/jT+vgvBtq8QAAAAIU2MG26jcUTSZMbHsWt0uw2SPJBycco1oQFx5N4cbLiNRQGS0ize7Kyv9kiI0/+PfT5Tr8c2NNz6MBpeQ1ONto=";pooling=False;multipleactiveresultsets=False;connect timeout=30;encrypt=False;trustservercertificate=False;packet size=4096;application name="Microsoft SQL Server Management Studio"
Decrypted Connection String:
data source=XXX.XXX.XXX.XXX;user id=sa;password="";pooling=False;multipleactiveresultsets=False;connect timeout=30;encrypt=False;trustservercertificate=False;packet size=4096;application name="Microsoft SQL Server Management Studio"
为什么password是空值。。。。。。。。。

脚本(网上查到的):
- param(
- [Parameter(Mandatory=$true)]
- [string] $FileName
- )
- Add-Type -AssemblyName System.Security
- $ErrorActionPreference = 'Stop'
- function Unprotect-String([string] $base64String)
- {
- return
- [System.Text.Encoding]::Unicode.GetString([System.Security.Cryptography.ProtectedData]::Unprotect([System.Convert]::FromBase64String($base64String
- ), $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser))
- }
- $document = [xml] (Get-Content $FileName)
- $nsm = New-Object 'System.Xml.XmlNamespaceManager' ($document.NameTable)
- $nsm.AddNamespace('rs', 'http://schemas.microsoft.com/sqlserver/RegisteredServers/2007/08')
- $attr = $document.DocumentElement.GetAttribute('plainText')
- if ($attr -ne '' -and $Operation -ieq 'Decrypt')
- {
- throw "The file does not contain encrypted passwords."
- }
- $servers = $document.SelectNodes("//rs:RegisteredServer", $nsm)
- foreach ($server in $servers)
- {
- $connString = $server.ConnectionStringWithEncryptedPassword.InnerText
- echo ""
- echo "Encrypted Connection String:"
- echo $connString
- echo ""
- if ($connString -inotmatch 'password="?([^";]+)"?') {continue}
- $password = $Matches[1]
- $password = Unprotect-String $password
- echo ""
- echo "Decrypted Connection String:"
- $connString = $connString -ireplace 'password="?([^";]+)"?', "password=`"$password`""
- echo $connString
- echo ""
- }