2009-10-02 10 views
1

Je dois créer un script .VBS pour réinitialiser le mot de passe de l'administrateur local Windows sur un grand nombre d'ordinateurs. Mon problème est que certains de nos sites ont renommé le compte administrateur pour des raisons de sécurité. Quelqu'un a-t-il un script qui modifie le mot de passe du compte administrateur en fonction du SID du compte administrateur d'origine?Réinitialiser le mot de passe pour le compte administrateur renommé

+0

+ 1 pour plus de clarté et pour expliquer exactement ce dont vous avez besoin. Je ne peux pas vous aider si :( –

Répondre

1

utilisant le fait que le SID administrateur local se termine toujours par -500:

strComputer="." ' local computer by default 
Set objUser=GetObject("WinNT://" & strComputer & "/" & GetAdminName & ",user")  
objUser.SetPassword "New local admin password"  
objUser.SetInfo 

Function GetAdminName 
    'This function was written using information from Table J.1 from the Windows XP resource Kit 
    'http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/Default.asp?url=/resources/documentation/Windows/XP/all/reskit/en-us/prnc_sid_cids.asp 

    Set objNetwork = CreateObject("Wscript.Network") 'get the current computer name 
    objComputerName = objNetwork.ComputerName  
    Set objwmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & objComputerName) 

    qry = "SELECT * FROM Win32_Account where Domain = '" & cstr(objComputerName) & "'" 
    'set query, making sure to only look at local computer 

    For Each Admin in objwmi.ExecQuery(qry) 
    if (left(admin.sid, 6) = "S-1-5-" and right(admin.sid,4) = "-500") then 'look for admin sid 
     GetAdminName = admin.name 
    end if 
    next  
end Function 
0

Il existe un outil flottant quelque part appelé LookupAccountName (avec la source!) Qui donné le SID de l'administrateur intégré vous donnera son nom.

Vous allez probablement finir par écrire du code C++ pour pouvoir retirer celui-ci raisonnablement bien.

0

Comme Josué dit, je ne pense pas que vous pouvez le faire avec l'hôte de script Windows uniquement, vous pouvez l'utiliser télécharger quelque chose et l'exécuter:

  • Une application personnalisée qui appelle LookupAccountSid (S-1 5-domaine-500 SID ou d'un groupe admin ENUM) + NetUserSetInfo pour réinitialiser le mot de passe (a besoin pour exécuter ce que admin)
  • http://home.eunet.no/pnordahl/ntpasswd/ (réinitialiser au démarrage)
  • Vider le SAM hash et casser le mot de passe (Cain, Jean Ripper, L0phtCrack etc.)
0

@ réponse de DmitryK est bonne, et je ne savais pas de ce genre de choses. Mais je sais que ce genre de chose est généralement plus propre dans PowerShell, donc je l'ai porté.

Par exemple, l'ensemble de la fonction GetAdminName peut être écrit:

 
$adminName = (gwmi win32_account | ? { $.SID.StartsWith('S-1-5-') -and $.SID.EndsWith('-500') }).Name 

(Ajouter l'option -ComputerName à l'gwmi appel à faire sur un serveur.)

Le reste devient:

 
$user = ([ADSI]"WinNT://$($env:COMPUTERNAME)/$adminName,User") 
$user.SetPassword('xxx') 
$user.SetInfo() 

(ap en utilisant le nom de l'ordinateur approprié, bien sûr.)

Questions connexes