Пароль к учетной записи компьютера в AD

danaql

У учетных записей компьютеров в AD как и у пользователей есть свои пароли. Как можно узнать пароль компьютера или назначить свой собственный ?

Dimon89

Существует возможность ручного изменения пароля учетной записи компьютера, для чего понадобится утилита Netdom из пакета Resource Kit для Windows, а не оснастка Active Directory — Пользователи и компьютеры (Active Directory — Users and Computers). Утилита Netdom расположена в каталоге Support\Tools. Для сброса пароля учетной записи компьютера введите следующую команду:
netdom resetpwd /server:<имя_сервера> /userd:<имя_пользователя>\Administrator /passwordd:*
После ввода команды будет выдано следующее сообщение:
Type the password associated with the domain user:
The machine account password for the local machine has been successfully reset.
The command completed successfully.
Программу Netdom следует запустить на компьютере, пароль которого необходимо изменить. Сервер должен являться контроллером домена, а пользователю, в свою очередь, требуется наличие административной учетной записи в домене для компьютера с модифицируемым паролем.
Для вступления в силу измененного пароля необходимо перезагрузить компьютер. Одновременный сброс пароля на локальном компьютере и контроллере домена позволяет гарантировать синхронизацию двух процессов, после чего начинается репликация данных Active Directory и произведенные изменения передаются другим контроллерам домена.
Первая ссылка в гугле

Dimon89

А, ну да, узнать пароль, полагаю, так же, как и у пользователей - никак. Ну или полным перебором по хэшу.

danaql

Ссылка в гугле на сброс пароля. Будет задаваться новый случайный пароль или установится тот что идет после "/passwordd:" ?
Необходимо задать свой собственный пароль для PassThrough Authentication в одной программе.
NetLogon service is the internal communication channel of Microsoft. One computer will create a unique identity in the domain and create some random password for the further communications within the domain. For eg, When the user tries to login, the computer will produce its identity to the AD and then it tries to authenticates the user. The user accounts are used for access privileges and it cannot communicate with AD directly so we are using the computer account for netlogon.

viktor954

Для авторизационных вещей обычно создаётся ОТДЕЛЬНАЯ учётка "компьютера".
Это можно сделать примерно вот так:

CreateComputerAccount.vbs pseudohostname pseudohostpassword DOMAIN domaincontroller.fqdn domainadmin domainadminpassword

CreateComputerAccount.vbs:

'$Id: CreateComputerAccount.vbs,v 1.3 2011/03/24 06:57:27 nshankar Exp $

'CreateComputerAccount.vbs
'Create a Computer account in Active Directory, set it's password and
'echo the principal name, DNS domain name and password in a | separated
'list. If no password is supplied, a random password will be set. If no
'container DN is supplied, the account will be created in the default
'Computers container (such as CN=Computers,DC=example,DC=com). If an
'error occurs, the error code and possibly error text will be returned
'in the first two fields of the output string. If the operation is
'successful, the error code is always "0".

'Option Explicit
'On Error Resume Next

Dim strContainer, strName, strPassword, strDnsDomain , strDomainController, strDomainAdminUser , strDomainAdminPwd
Dim objContainer, objComputer, objRootDSE, objSystemInfo

strContainer = ""
strName = ""
strPassword = ""
strDnsDomain = ""

If WScript.Arguments.Count = 0 Then
WScript.Echo "Error : Usage: CreateComputerAccount.vbs <Name>"
WScript.Echo " [/p <Password>]"
WScript.Echo " [/c <ContainerDN> | /d <DnsDomain>]"
WScript.Echo "Output: <ErrorCode>|<ErrorText>|<PrincipalName>|<DnsDomain>|<Password>"
WScript.Quit
End If

Select Case WScript.Arguments.Count
Case 6
strName = Wscript.Arguments(0)
strPassword = Wscript.Arguments(1)
strDnsDomain = Wscript.Arguments(2)
strDomainController = Wscript.Arguments(3)
strDomainAdminUser = Wscript.Arguments(4)
strDomainAdminPwd = Wscript.Arguments(5)
strContainer = ""
Case Else
strMsg = "Error # in parameters passed"
WScript.Echo strMsg
WScript.Quit(0)
End Select
If strName = "" Then
WScript.Echo "Error : Usage: CreateComputerAccount.vbs <Name> [[p] <Password>] [[c] <ContainerDN>]"
WScript.Quit
End If

Function TranslateDnToDnsDomain(dn)
Dim objTrans, strCanon

'ADS_NAME_INITTYPE_GC 3
'ADS_NAME_TYPE_1779 1
'ADS_NAME_TYPE_CANONICAL 2

Set objTrans = CreateObject("NameTranslate")
objTrans.Init 3, ""
objTrans.Set 1, dn
strCanon = objTrans.Get(2)
strCanon = Mid(strCanon, 1, InStr(strCanon, "/") - 1)

TranslateDnToDnsDomain = strCanon
End Function
If strContainer <> "" Then
strDnsDomain = TranslateDnToDnsDomain(strContainer)
ElseIf strDnsDomain <> "" Then
'WScript.Echo "strDnsDomain is " & strDnsDomain
Set objRootDSE = GetObject("LDAP://" & strDomainController & "/RootDSE")
strContainer = "CN=Computers," & objRootDSE.Get("DefaultNamingContext")
Else
Set objRootDSE = GetObject("LDAP://RootDSE")
strContainer = "CN=Computers," & objRootDSE.Get("DefaultNamingContext")
strDnsDomain = TranslateDnToDnsDomain(strContainer)
End If


Function RandPass(pn)
Dim c, n, m, s, ret, i, r

c = "abcdefghjkmnpqrstuvwxyz"
n = "23456789"
m = "~$^-+."
ret = ""

Randomize

pn = pn - 1

For i = 0 to pn
If i Mod 8 = 4 Then
s = m
ElseIf i Mod 8 > 4 Then
s = n
Else
s = c
End If
r = Int(Rnd * Len(s
ret = ret & Mid(s, r + 1, 1)
Next

RandPass = ret
End Function

If strPassword = "" Then
strPassword = RandPass(8)
End If

If Err.Number = 0 Then

Dim strUsername, strPass, objNamespaceLDAP
strUserName = "cn=" & strDomainAdminUser & ",cn=Users," & objRootDSE.Get("DefaultNamingContext")
'WScript.Echo strUserName
'WScript.Echo "strcontainer" & strContainer
'WScript.Echo "hhhh" & objRootDSE.Get("DefaultNamingContext")
strPass = strDomainAdminPwd
Dim subStrings,tmp
subStrings = Split(","&objRootDSE.Get("DefaultNamingContext" ",DC=")
'Filter(objRootDSE.Get("DefaultNamingContext" "DC=", True, 0)
Dim cnt,cnt1
bndStr = ""
cnt1 = UBound(subStrings)
For cnt = 1 to cnt1
tmp = tmp + subStrings(cnt)
If cnt <> cnt1 Then
tmp = tmp & "."
End If
'WScript.Echo "bindStr" & tmp
Next

'WScript.Echo "bindStr" & tmp

Set objNamespaceLDAP = GetObject("LDAP:")
Set objContainer = objNamespaceLDAP.OpenDSObject("LDAP://" & strDomainController & "/" & strContainer,strUserName,strDomainAdminPwd,0)

If Err.Number = 0 Then

Set objComputer = objContainer.Create("Computer", "CN=" & strName)
'WScript.Echo objComputer
If Err.Number = 0 Then
objComputer.sAMAccountName = strName & "$"
objComputer.userAccountControl = 4128
objComputer.SetInfo
If Err.Number = 0 Then
objComputer.SetPassword strPassword
If Err.Number = 0 Then

WScript.Echo "SUCCESS#" & objComputer.sAMAccountName & "@" & tmp & "#" & tmp & "#"

WScript.Quit
End If
End If
End If
End If
End If
'If Err.Number = 0 Then
' WScript.Quit
If Err.Number = &H80071392 Then
Err.Description = "The object already exists"
ElseIf Err.Number = &H80072035 Then
Err.Description = "The server is unwilling to process the request"
Else
WScript.Echo "Error " & Hex(Err.Number) & "|" & Err.Description & "||"

End If

WScript.Quit


Взято у индусов из AdventNet/ZOHO

konden

Нужно зайти на сервер в АД и нажать правой кнопкой мыши на комп пользователя, там можно будет изменить пароль на новый. :cool: :p
Оставить комментарий
Имя или ник:
Комментарий: