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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Проверить какая УЗ подходит к компьютеру вне домена (http://forum.oszone.net/showthread.php?t=287815)

HFShak 11-09-2014 17:37 2401483

Проверить какая УЗ подходит к компьютеру вне домена
 
Добрый день!
Есть много компьютеров вне домена и так же есть много административных УЗ и много паролей к ним.
Можно ли как нибудь проверить на соответствие, к какому компьютеру какая УЗ подходит?

Вот начал делать , не знаю что дальше, не могу найти какую-либо функцию для проверки авторизации:

Код:

#include <Array.au3>

Local $avArrayAccaunt[6] = ["Администратор", "Admin", "Admin1", "User", "Adm", "TEMP"]
Local $avArrayPassword[4] = ["12345", "54321", "qwerty", "12345678"]
Local $ASum = UBound($avArrayAccaunt)
Local $PSum = UBound($avArrayPassword)

For $i=0 To $ASum-1
        For $j=0 To $PSum-1
                ConsoleWrite($avArrayAccaunt[$i] & $avArrayPassword[$j] & @CRLF)
                ...
        Next
Next


Iska 11-09-2014 17:49 2401486

Зачем это Вам?

HFShak 11-09-2014 18:07 2401497

Затем, чтобы на всех компьютерах создать одну административную УЗ и далее работать с ними под ней

Iska 11-09-2014 19:17 2401522

HFShak, Вы меня не поняли. Каким образом могло произойти такое, как потеря паролей от учётной записи администратора, на куче машин?

HFShak 12-09-2014 10:10 2401750

В компании нет домена, около 100 ПК, какой специалисты придумали пароль такой и ставили, нет какой-то централизации. Оставили много паролей и УЗ.
Хочу завести одну УЗ, массово переименовать, кое-что разлить на них, собрать информацию и т.п. Работать с перебором паролей очень сложно.

Iska 12-09-2014 10:57 2401770

Цитата:

Цитата HFShak
Работать с перебором паролей очень сложно. »

Именно. Посему берёте болванку/флэшку с каким-нибудь приличным загрузочным образом сбрасывания пароля Администратора и проходите по всем машинам, задавая следом единый пароль. Затем начинаете со своей машины «рулить» удалённо, решая все прочие проблемы вида:
Цитата:

Цитата HFShak
много паролей и УЗ. »

Совсем было бы хорошо завести себе домен.

HFShak 12-09-2014 11:12 2401786

А почему нельзя сменить или добавить УЗ с помощью net user , тем более, что все пароли известны?
А ходить по всем компам и их перезагружать займет уйму времени.

Проще даже проверить УЗ через psexec -u ..., но хотелось бы сделать в autoit

Цитата:

Цитата Iska
Совсем было бы хорошо завести себе домен. »

А потом вгонять по одной машине в домен, можно сделать и скриптовыми методами...

Есть ли в autoit функция в которую можно вписать конкретного пользователя? Что то типо RegRead для удаленной машины

Iska 12-09-2014 11:41 2401807

Цитата:

Цитата HFShak
тем более, что все пароли известны? »

Это точно? Вы же сами написали — перебирать надо, нет? Поясните ещё раз.

HFShak 12-09-2014 11:43 2401809

Цитата:

Цитата Iska
Это точно? Вы же сами написали — перебирать надо, нет? Поясните ещё раз. »

Скажем так, есть коло 6 разных УЗ (admin, админстратор, adminstrator, и т.п.) и есть пароли их тоже около 6 (они все известны), но какой пароль был установлен на какую УЗ неизвестно.

Iska 12-09-2014 20:34 2402054

HFShak, теперь примерно ясно. То есть, нам надо перебрать весь массив машин, последовательно подставляя для соединения к ним каждую пару логин/пароль комбинированного множества, составленного из набора учётных записей и набора возможных паролей — так?

HFShak 13-09-2014 10:27 2402231

Цитата:

Цитата Iska
HFShak, теперь примерно ясно. То есть, нам надо перебрать весь массив машин, последовательно подставляя для соединения к ним каждую пару логин/пароль комбинированного множества, составленного из набора учётных записей и набора возможных паролей — так? »

Да, надо к каждой машине перебрать пару логин/пароль (получился около 30 пар) и понять, какая пара является правильной.

Iska 16-09-2014 14:23 2403484

HFShak, на WSH:
читать дальше »
Код:

Option Explicit

Dim arrResources
Dim arrLogins
Dim arrPasswords

Dim strResource
Dim strLogin
Dim strPassword

Dim objWshNetwork


arrResources = Array("\\machine01\c$", "\\machine02\c$", "\\machine03\d$")
arrLogins    = Array("Админ", "Администратор", "Administrator")
arrPasswords = Array("123", "111", "qwerty")


Set objWshNetwork = WScript.CreateObject("WScript.Network")

For Each strResource In arrResources
        WScript.Echo strResource
        WScript.Echo "----------------------"
       
        For Each strLogin In arrLogins
                For Each strPassword In arrPasswords
                        On Error Resume Next
                        objWshNetwork.MapNetworkDrive "", strResource, False, strLogin, strPassword
                       
                        If Err.Number = 0 Then
                                Err.Clear
                                On Error Goto 0
                               
                                WScript.Echo "+", strLogin, vbTab, strPassword
                                objWshNetwork.RemoveNetworkDrive strResource, True, False
                        Else
                                If Err.Number = &H8007052E Then
                                        WScript.Echo "-", strLogin, vbTab, strPassword
                                Else
                                        WScript.Echo "Unknown error: ", Hex(Err.Number), Err.Description
                                End If
                               
                                On Error Goto 0
                        End If
                Next
        Next
       
        WScript.Echo "----------------------"
        WScript.Echo
Next

Set objWshNetwork = Nothing

WScript.Quit 0


Если очень принципиально надо на AutoIt — перепишу. Обратите внимание: если у Вас установлена политика блокировки учётных записей при вводе нескольких неправильных паролей — скрипт наверняка не отработает до конца корректно.

HFShak 16-09-2014 15:00 2403498

На autoit очень желательно, если это не сложно, т.к. мне не понятен синтаксис WSH.
Надо, чтобы в нормальном виде записывал, я потом сам доделаю, просто как на autoit сделать переход на \\pc\C$ ?

Ну вроде работает работает:
читать дальше »
C:\Users\User\Desktop>cscript 1.vbs
Сервер сценариев Windows (Microsoft ®) версия 5.8
© Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.

\\192.168.1.60\c$
----------------------
Unknown error: 80070035 Не найден сетевой путь.

Unknown error: 80070035 Не найден сетевой путь.

Unknown error: 80070035 Не найден сетевой путь.

Unknown error: 80070035 Не найден сетевой путь.

Unknown error: 80070035 Не найден сетевой путь.

Unknown error: 80070035 Не найден сетевой путь.

Unknown error: 80070035 Не найден сетевой путь.

Unknown error: 80070035 Не найден сетевой путь.

Unknown error: 80070035 Не найден сетевой путь.

----------------------

\\192.168.1.68\c$
----------------------
Unknown error: 80070005 Отказано в доступе.

Unknown error: 80070005 Отказано в доступе.

Unknown error: 80070005 Отказано в доступе.

Unknown error: 80070056 Сетевой пароль указан неверно.

+ Администратор Adm1n123!
Unknown error: 80070056 Сетевой пароль указан неверно.

Unknown error: 80070005 Отказано в доступе.

Unknown error: 80070005 Отказано в доступе.

Unknown error: 80070005 Отказано в доступе.

----------------------


C:\Users\User\Desktop>

Iska 16-09-2014 15:59 2403513

Цитата:

Цитата HFShak
На autoit очень желательно, если это не сложно, т.к. мне не понятен синтаксис WSH. »

Очень неохота делать ;(. Может, будет достаточно и WSH?

Цитата:

Цитата HFShak
Ну вроде работает работает:
« скрыть
C:\Users\User\Desktop>cscript 1.vbs

\\192.168.1.60\c$
----------------------
Unknown error: 80070035 Не найден сетевой путь. »

«192.168.1.60» был отключён/недоступен/не настроен для доступа?

HFShak 16-09-2014 16:22 2403522

Цитата:

Цитата HFShak
«192.168.1.60» был отключён/недоступен/не настроен для доступа? »

Да, он просто выключен. Спасибо!
А можно вывести запись в файл, а не в консоль?
Так, а как на автоите сделать переход на \\pc\C$ ? Какой функцией? DriveMapAdd?

Iska 16-09-2014 17:08 2403532

Цитата:

Цитата HFShak
А можно вывести запись в файл, а не в консоль? »

Код:

cscript.exe //nologo "1.vbs" >"c:\Мой путь\file.txt"
Цитата:

Цитата HFShak
Так, а как на автоите сделать переход на \\pc\C$ ? Какой функцией? »

Либо той же — если использовать «ObjCreate("WScript.Network")», либо родной «DriveMapAdd()», а затем анализировать ошибку, если функция вернула «0».

HFShak 17-09-2014 10:49 2403850

Добрый день!
На autoit получается выглядит вот так?:

Код:

#include <Array.au3>

_CheckAdministration()

Func _CheckAdministration()
Local $avArrayAccaunt[3] = ["Администратор", "Administrator", "Admin"]
Local $avArrayPassword[5] = ["1234", "4321", "qwerty", "Admin123!"]
Local $sAccauntSum = UBound($avArrayAccaunt)
Local $sPasswordSum = UBound($avArrayPassword)
Local $sFilePC = FileOpen(@ScriptDir & "\pc.txt")

While 1
        $sLine = FileReadLine($sFilePC)
        If @error = -1 Then ExitLoop
        For $i=0 To $sAccauntSum-1
                For $j=0 To $sPasswordSum-1
                        $objNet = DriveMapAdd("", "\\" & $sLine & "\C$", 0, $sLine & "\" & $avArrayAccaunt[$i], $avArrayPassword[$j])
                        If $objNet = 1 Then
                                ConsoleWrite($sLine & @TAB & $avArrayAccaunt[$i] & @TAB & $avArrayPassword[$j] & @CRLF)
                        Else
                                ConsoleWrite("Error = " & $objNet & @CRLF)
                        EndIf
                        DriveMapDel("\\" & $sLine & "\C$")
                Next
        Next
WEnd
FileClose($sFilePC)
EndFunc


Iska 17-09-2014 12:07 2403884

Цитата:

Цитата HFShak
На autoit получается выглядит вот так?: »

Если код работает (и работает корректно) — то так ;).

HFShak 22-09-2014 10:11 2405632

Цитата:

Цитата Iska
Если код работает (и работает корректно) — то так . »

Да, работает вроде корректно.
Скажите, а если в пароле русские буквы, drivemapadd отработает?

Iska 22-09-2014 14:36 2405712

Цитата:

Цитата HFShak
Скажите, а если в пароле русские буквы, drivemapadd отработает? »

Не проверял, но, полагаю, должно отработать. Впрочем, Вы ведь сами вполне можете проверить на какой-нибудь тестовой машине, а затем отписаться сюда по результатам.

HFShak 22-09-2014 16:42 2405760

Да, я уже проверил, все работает. Спасибо.
Вот код, если кому понадобится:
Код:

#include <Array.au3>
#include <File.au3>

_CheckAdministration()

Func _CheckAdministration() ; Функция проверяет какая административная УЗ заведена на компьютере
        Local $avArrayAccaunt[4] = ["Администратор", "Administrator", "Admin", "User"] ; Задаем массив с аккаунтами
        Local $avArrayPassword[3] = ["P@ssw0rd", "Admin!#", "Админ123"] ; Задаем массив с паролями
        Local $sAccauntSum = UBound($avArrayAccaunt)
        Local $sPasswordSum = UBound($avArrayPassword)
        Local $arrDevices
        Local $arrPC
        FileDelete(@ScriptDir & "\reportPassword.txt")
        $sReportFile = FileOpen(@ScriptDir & "\reportPassword.txt", 2)

        _FileReadToArray(@ScriptDir & "\pc.txt", $arrPC)
        _FileReadToArray(@ScriptDir & "\devices.txt", $arrDevices)
        $arrDevices = _ExcludeDevices($arrDevices) ; Исключаем принтеры и т.п.
        $arrPC = _ExcludeDevices($arrPC)

        For $k = 0 To Ubound($arrPC)-1
                If Ping($arrPC[$k], 250) Then
                        For $i=0 To $sAccauntSum-1
                                For $j=0 To $sPasswordSum-1
                                        $objNet = DriveMapAdd("", "\\" & $arrPC[$k] & "\C$", 0, $avArrayAccaunt[$i], $avArrayPassword[$j])
                                        If $objNet = 1 Then
                                                ConsoleWrite($arrPC[$k] & @TAB & $avArrayAccaunt[$i] & @TAB & $avArrayPassword[$j] & @CRLF)
                                                FileWriteLine($sReportFile, $arrPC[$k] & @TAB & $avArrayAccaunt[$i] & @TAB & $avArrayPassword[$j])
                                        Else
                                                ConsoleWrite($arrPC[$k] & " error" & @CRLF)
                                        EndIf
                                        DriveMapDel("\\" & $arrPC[$k] & "\C$")
                                Next
                        Next
                Else
                        ConsoleWrite($arrPC[$k] & " offline"& @CRLF)
                EndIf
        Next
        FileClose($sReportFile)
EndFunc

Func _ExcludeDevices($Array)
        Local $k = 0
        For $i = 1 To Ubound($Array)-1
                Assign($Array[$i] & "_3j5d2f8k_", Eval($Array[$i] & "_3j5d2f8k_") + 1, 2) ; создаём глобальные переменные или увеличиваем значение для уже созданных
                If Eval($Array[$i] & "_3j5d2f8k_") = 1 Then
                        $Array[$k] = $Array[$i]
                        $k+=1
                EndIf
        Next
        ReDim $Array[$k]
        Return $Array
EndFunc


HFShak 26-09-2014 12:19 2407240

Еще один вопрос, а можно данную функцию использовать от имени найденного администратора?
Код:

_User('192.168.51.1')

Func _User($strComputer)
        $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
        $colItems = $objWMIService.ExecQuery("Select UserName From Win32_ComputerSystem")
        $sResult = ''
        For $objItem in $colItems
                $sResult &= "UserName: " & $objItem.UserName & @CRLF
        Next
        ConsoleWrite($sResult)
EndFunc


Iska 26-09-2014 21:49 2407419

Цитата:

Цитата HFShak
а можно данную функцию использовать от имени найденного администратора? »

Вопрос непонятен.


Время: 21:43.

Время: 21:43.
© OSzone.net 2001-