Цитата BrAWo:
не то возвращает что нужно »
|
Возвращает перекодированную строку в base64. А вам видимо нужно расшифровать логин полученный из реестра. Алгоритмы шифрования для меня смутная тема, но я вот попробовал перевести функцию Decrypt с дельфи (та что в теме по ссылке):
Код:
$sDecrypt = Decrypt(_Base64Decode("cQf4Zvo="), 4235)
ConsoleWrite("Decode: " & $sDecrypt & @CRLF)
Func Decrypt($S, $Key)
Const $c1 = 51472, $c2 = 30759
$aS = StringSplit($S, "")
$S = ""
For $i = 1 To $aS[0]
$S &= Chr(BitXOR($aS[$i], BitShift($Key, 8)))
$Key = ($aS[$i] + $Key) * $c1 + $c2
Next
$result = $S ;UTF8Decode($X)
Return $result
EndFunc
Func _Base64Decode($Data)
Local $Opcode = "0xC81000005356578365F800E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132338F45F08B7D0C8B5D0831D2E9910000008365FC00837DFC047D548A034384C0750383EA033C3D75094A803B3D75014AB00084C0751A837DFC047D0D8B75FCC64435F400FF45FCEBED6A018F45F8EB1F3C2B72193C7A77150FB6F083EE2B0375F08A068B75FC884435F4FF45FCEBA68D75F4668B06C0E002C0EC0408E08807668B4601C0E004C0EC0208E08847018A4602C0E00624C00A46038847028D7F038D5203837DF8000F8465FFFFFF89D05F5E5BC9C21000"
Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
DllStructSetData($CodeBuffer, 1, $Opcode)
Local $Ouput = DllStructCreate("byte[" & BinaryLen($Data) & "]")
Local $Ret = DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
"str", $Data, _
"ptr", DllStructGetPtr($Ouput), _
"int", 0, _
"int", 0)
Return BinaryToString(BinaryMid(DllStructGetData($Ouput, 1), 1, $Ret[0]))
EndFunc
Но безрезультатно (не уверен на счёт UTF8Decode()), либо я что-то накосячил при переводе кода, либо нужен другой алгоритм/метод.