我們擁有一批拉尼爾MFP的使用掃描至文件夾選項,以使人們能夠得到他們的證件,我們正着手實施他們通過使用AD密碼更安全的措施強制重置密碼。PowerShell的運行Java腳本加密密碼
不幸的是,Laniers使用的密碼專有加密。我設法得到了一個功能強大的Java命令,可以將密碼加密成這種格式。我遇到的問題是,我必須將此編碼密碼放入PowerShell才能將其傳遞到掃描器。
我可以通過命令行運行Java命令,但是無法通過加密的口令回PowerShell中的字符串,打印機將接受(它需要以Base64)。如果我將編碼後的密碼傳遞迴PowerShell,然後通過PowerShell的Base64創建過程運行它,顯然,對於掃描儀來說,使用它變得太多了。
我需要確定的是是否有辦法爲我採取以下命令行命令,讓它在PowerShell中運行,那麼我提供它的輸出,所以我可以把它傳遞給打印機。
java -cp ./commons-codec-1.10.jar;. cdm.GwpwesCharacterEncoding %pass% "gwpwes002"
java命令輸出基於以下行一個Base64字符串:
return new String(Base64.encodeBase64((byte[])encrypt));
舉個例子,如果我通過文本「測試」成,我得到的字符串「HVhcmtla25meHVncHQ == 「
這是對我沒用,不過,因爲我不能再得到這回PowerShell來通過到打印機,如果我它編碼爲Base64使用PowerShell,它出來作爲‘MgBoAHMAWgBtADkAegBjADIAQgBxAGUAMABKAHgAWgBYAGgAbgBiAG0AMAB3AD0A’。
任何人都可以幫忙嗎?一些援助後
修改後的代碼:
$pass1 = "test"
$path = "c:\Test\printercreds"
$encode = "gwpwes002"
cd $path
$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pInfo.FileName = 'java'
$pInfo.Arguments = "-jar .\commons-codec-1.10.jar cdm.GwpwesCharacterEncoding $pass1 $encode"
$pInfo.UseShellExecute = $false
$pInfo.RedirectStandardOutput = $true
$pInfo.RedirectStandardError = $true
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $pInfo
[void]$process.Start()
$passsec = $process.StandardOutput.ReadtoEnd()
$process.WaitforExit()
write-host $passsec
HVhcmtla25meHVncHQ ==已經Base64編碼 –
是的,它確實看起來是這樣,但是當我將該字符串拉回PowerShell(唯一的方法是讓批處理文件輸出到一個文本,然後從PowerShell中讀取該文本文件),將其提供給打印機的命令會投訴。它給出的確切錯誤是: 無法設置「propVal」,因爲只有字符串可用作設置XmlNode屬性的值 – JCovalt
Java不是腳本語言,並且Java程序不是腳本。密碼應該是散列的,而不是加密的。 – EJP