Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помогите переписать vbs ф-цию на powershell (http://forum.oszone.net/showthread.php?t=286474)

rudimko 14-08-2014 13:56 2389200

Помогите переписать vbs ф-цию на powershell
 
Друзья, встала задача по общей безопасности с локальными учетными записями персональных компьютеров в домене.

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

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

rudimko 14-08-2014 14:10 2389202

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

Kazun 14-08-2014 14:27 2389207

How To Automate Changing The Local Administrator Password

rudimko 14-08-2014 14:47 2389219

Очень интересный вариант, отложил в избранное, но пока что мне нужно мягко говоря другое. Кто может помочь переписать функцию расшифровки из 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 2389240

Код:

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 2389251

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

Kazun 14-08-2014 17:00 2389274

Код:

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 2389294

Спасибо, все работает.


Время: 20:53.

Время: 20:53.
© OSzone.net 2001-