-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Проверить какая УЗ подходит к компьютеру вне домена
Добрый день!
Есть много компьютеров вне домена и так же есть много административных УЗ и много паролей к ним.
Можно ли как нибудь проверить на соответствие, к какому компьютеру какая УЗ подходит?
Вот начал делать , не знаю что дальше, не могу найти какую-либо функцию для проверки авторизации:
Код:
#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
|
Затем, чтобы на всех компьютерах создать одну административную УЗ и далее работать с ними под ней
|
HFShak, Вы меня не поняли. Каким образом могло произойти такое, как потеря паролей от учётной записи администратора, на куче машин?
|
В компании нет домена, около 100 ПК, какой специалисты придумали пароль такой и ставили, нет какой-то централизации. Оставили много паролей и УЗ.
Хочу завести одну УЗ, массово переименовать, кое-что разлить на них, собрать информацию и т.п. Работать с перебором паролей очень сложно.
|
Цитата:
Цитата HFShak
Работать с перебором паролей очень сложно. »
|
Именно. Посему берёте болванку/флэшку с каким-нибудь приличным загрузочным образом сбрасывания пароля Администратора и проходите по всем машинам, задавая следом единый пароль. Затем начинаете со своей машины «рулить» удалённо, решая все прочие проблемы вида:
Совсем было бы хорошо завести себе домен.
|
А почему нельзя сменить или добавить УЗ с помощью net user , тем более, что все пароли известны?
А ходить по всем компам и их перезагружать займет уйму времени.
Проще даже проверить УЗ через psexec -u ..., но хотелось бы сделать в autoit
Цитата:
Цитата Iska
Совсем было бы хорошо завести себе домен. »
|
А потом вгонять по одной машине в домен, можно сделать и скриптовыми методами...
Есть ли в autoit функция в которую можно вписать конкретного пользователя? Что то типо RegRead для удаленной машины
|
Цитата:
Цитата HFShak
тем более, что все пароли известны? »
|
Это точно? Вы же сами написали — перебирать надо, нет? Поясните ещё раз.
|
Цитата:
Цитата Iska
Это точно? Вы же сами написали — перебирать надо, нет? Поясните ещё раз. »
|
Скажем так, есть коло 6 разных УЗ (admin, админстратор, adminstrator, и т.п.) и есть пароли их тоже около 6 (они все известны), но какой пароль был установлен на какую УЗ неизвестно.
|
HFShak, теперь примерно ясно. То есть, нам надо перебрать весь массив машин, последовательно подставляя для соединения к ним каждую пару логин/пароль комбинированного множества, составленного из набора учётных записей и набора возможных паролей — так?
|
Цитата:
Цитата Iska
HFShak, теперь примерно ясно. То есть, нам надо перебрать весь массив машин, последовательно подставляя для соединения к ним каждую пару логин/пароль комбинированного множества, составленного из набора учётных записей и набора возможных паролей — так? »
|
Да, надо к каждой машине перебрать пару логин/пароль (получился около 30 пар) и понять, какая пара является правильной.
|
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 — перепишу. Обратите внимание: если у Вас установлена политика блокировки учётных записей при вводе нескольких неправильных паролей — скрипт наверняка не отработает до конца корректно.
|
На 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>
|
Цитата:
Цитата 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
«192.168.1.60» был отключён/недоступен/не настроен для доступа? »
|
Да, он просто выключен. Спасибо!
А можно вывести запись в файл, а не в консоль?
Так, а как на автоите сделать переход на \\pc\C$ ? Какой функцией? DriveMapAdd?
|
Цитата:
Цитата HFShak
А можно вывести запись в файл, а не в консоль? »
|
Код:
cscript.exe //nologo "1.vbs" >"c:\Мой путь\file.txt"
Цитата:
Цитата HFShak
Так, а как на автоите сделать переход на \\pc\C$ ? Какой функцией? »
|
Либо той же — если использовать «ObjCreate("WScript.Network")», либо родной «DriveMapAdd()», а затем анализировать ошибку, если функция вернула «0».
|
Добрый день!
На 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
|
Цитата:
Цитата HFShak
На autoit получается выглядит вот так?: »
|
Если код работает (и работает корректно) — то так ;).
|
Цитата:
Цитата Iska
Если код работает (и работает корректно) — то так . »
|
Да, работает вроде корректно.
Скажите, а если в пароле русские буквы, drivemapadd отработает?
|
Цитата:
Цитата HFShak
Скажите, а если в пароле русские буквы, drivemapadd отработает? »
|
Не проверял, но, полагаю, должно отработать. Впрочем, Вы ведь сами вполне можете проверить на какой-нибудь тестовой машине, а затем отписаться сюда по результатам.
|
Да, я уже проверил, все работает. Спасибо.
Вот код, если кому понадобится:
Код:
#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
|
Еще один вопрос, а можно данную функцию использовать от имени найденного администратора?
Код:
_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
|
Цитата:
Цитата HFShak
а можно данную функцию использовать от имени найденного администратора? »
|
Вопрос непонятен.
|
Время: 21:43.
© OSzone.net 2001-