PDA

Показать полную графическую версию : [решено] Помогите переписать vbs ф-цию на powershell


rudimko
14-08-2014, 13:56
Друзья, встала задача по общей безопасности с локальными учетными записями персональных компьютеров в домене.

Реально ли написать что-то подобное, кто может помочь?
1. логон-скрипт для установки локальной учетной записи PC (по SSID) случайного пасса
2. шифрование его и сброс хэша на какой-нибудь ресурс
3. скрипт-декриптор для расшифровки имеющегося хэша (лучше всего на powershell)

Хочу внетрить подобную систему в домен и автоматизировать... Спасибо, буду рад помощи.

rudimko
14-08-2014, 14:10
О, нашел vbs скрипты для реализации подобной темы.
Можно ли decrypt.vbs переписать в Powershell?

Kazun
14-08-2014, 14:27
How To Automate Changing The Local Administrator Password (http://blogs.technet.com/b/askpfeplat/archive/2014/05/19/how-to-automate-changing-the-local-administrator-password.aspx)

rudimko
14-08-2014, 14:47
Очень интересный вариант, отложил в избранное, но пока что мне нужно мягко говоря другое. Кто может помочь переписать функцию расшифровки из decrypt.vbs (в архиве) на Powershell, спасибо:
Function Decrypt(str,key)
Dim lenKey, KeyPos, LenStr, x, Newstr

Newstr = ""
lenKey = Len(key)
KeyPos = 1
LenStr = Len(Str)

str=StrReverse(str)
For x = LenStr To 1 Step -1
Newstr = Newstr & chr(asc(Mid(str,x,1)) - Asc(Mid(key,KeyPos,1)))
KeyPos = KeyPos+1
If KeyPos > lenKey Then KeyPos = 1
Next
Newstr=StrReverse(Newstr)
Decrypt = Newstr
End Function

Kazun
14-08-2014, 15:34
Function Decrypt($str,$key="oebfFRPncgtprw5") {
$Newstr = ""
$lenKey = $key.Length - 1
$KeyPos = 0
$LenStr = $str.Length

$str = -join ([regex]::Matches($str,'.','RightToLeft') | ForEach {$_.value})

For ($x = $LenStr; $x -ge 1; $x--) {
$Newstr += [char]([int][char]$str.substring(($x-1),1) - [int][char]$key.substring($KeyPos,1))
$KeyPos++
If ($KeyPos -gt $lenKey) { $KeyPos = 0}
}

-join ([regex]::Matches($NewStr,'.','RightToLeft') | ForEach {$_.value})
}

rudimko
14-08-2014, 16:03
Здорово!
Опробовал командой, но не получилось :(
Написал - Decrypt $(gc "C:\criptpass\comps\hash.txt") но вылезли грабли, что-то задекриптилось, но не верно, кракозябры =\ Может быть не так использую ф-цию?

Kazun
14-08-2014, 17:00
Function Decrypt($str,$key=[int[]][char[]]"oebfFRPncgtprw5") {
$k = 0

$str = $str | Foreach {
[char]($_ - $key[$k])
$k++
If ($k -gt $key.count) { $k = 0}
}
[array]::Reverse($str)
-join $str
}

Decrypt (gc C:\criptpass\comps\hash.txt -enc byte -TotalCount 12)

rudimko
14-08-2014, 18:04
Спасибо, все работает.




© OSzone.net 2001-2012